Advertisement
swick

Untitled

Dec 6th, 2019
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.60 KB | None | 0 0
  1. clc; clear;
  2. load('hw8_p1.mat');
  3.  
  4. h = @(i) (x(i+1)-x(i));
  5. f = @(i,j) (y(i)-y(j))/(x(i)-x(j));
  6.  
  7. % calculate c's
  8. cA =    [   1           0               0               0               0               0;
  9.             h(1)        2*(h(1)+h(2))   h(2)            0               0               0;
  10.             0           h(2)            2*(h(2)+h(3))   h(3)            0               0;
  11.             0           0               h(3)            2*(h(3)+h(4))   h(4)            0;
  12.             0           0               0               h(4)            2*(h(4)+h(5))   h(5);
  13.             0           0               0               0               0           1       ];
  14.        
  15. cb =    [   0;
  16.             3*(f(3,2)-f(2,1));
  17.             3*(f(4,3)-f(3,2));
  18.             3*(f(5,4)-f(4,3));
  19.             3*(f(6,5)-f(5,4));
  20.             0   ];
  21.        
  22. c = cA\cb;
  23.  
  24. % calculate b's        
  25. b = zeros(5,1);
  26. for ii = 1:5
  27.     b(ii) = (y(ii+1)-y(ii))/h(ii)-(h(ii)*(2*c(ii)+c(ii+1)))/3;
  28. end
  29.  
  30. b;
  31.  
  32. % calculate d's
  33.  
  34. d = zeros(5,1);
  35. for ii = 1:5
  36.     d(ii) = (c(ii+1)-c(ii))/(3*h(ii));
  37. end
  38.  
  39. d;
  40.  
  41. % calculate a's
  42. a = y(1:end-1);
  43.  
  44. % yt = zeros(5,length(x(
  45. maxes = zeros(5,2);
  46. for ii = 1:5
  47.     xt = x(ii):.1:x(ii+1);
  48.     yt = a(ii) + b(ii)*(xt-x(ii)) + c(ii)*(xt-x(ii)).^2 + d(ii)*(xt-x(ii)).^3;
  49.     [maxes(ii,1),loc] = max(yt);
  50.     maxes(ii,2) = xt(loc);
  51.     plot(xt,yt)
  52.     hold on
  53. end
  54. scatter(x,y)
  55. legend('segment 1', 'segment 2', 'segment 3', 'segment 4', 'segment 5', 'raw data')
  56. xlabel('location [m]')
  57. ylabel('elevation [m]')
  58. hold off
  59. maxes
  60. max = max(maxes(:,1))
  61. location = maxes(find(maxes==max),2)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement