2014-03-29 92 views

回答

2

當你說「暗算兩個斜坡」,我會認爲你的意思是你要繪製最能接近您的數據的兩個部分的線。爲此,您需要執行曲線擬合程序,如最小二乘法。有關MATLAB中最小二乘逼近的更多信息,請參閱此問題:How do I use the least squares approximation in MATLAB?

我將假設您的數據存儲在矢量xy中。

%//number of points for the first part of the curve: 
n=4; 

%// Separate (x,y) into (x1,y1) and (x2,y2) 
x1 = x(1:n); x2=x(n+1:end); 
y1 = y(1:n); y2=y(n+1:end); 

%// fit a line y=A1*x+A2 to the first set of points: 
M=[x1(:) ones(length(x1),1)]; 
A = M\y1(:); %//A(1) is your slope, A(2) is your y-intercept 

%// fit a line y=B1*x+B2 to the second set of points: 
M=[x2(:) ones(length(x2),1)]; 
B = M\y2(:); %//B(1) is your slope, B(2) is your y-intercept 

%//Plot: 
hold on 
fplot(@(x)A(1)*x+A(2),[min(x1) max(x1)]) 
fplot(@(x)B(1)*x+B(2),[min(x2) max(x2)]) 
+0

代碼中的一些更正爲: x1 = x(1:n); X2 = X(N + 1:結束); y1 = y(1:n); Y2 = Y(N + 1:結束); (x1,y1,'o'); //繪圖: 等一下; plot(x1,A(1)* x1 + A(2)) plot(x2,y2,'o');等一下; plot(x2,B(1)* x2 + B(2)) –

+0

謝謝,我修正了涉及'y1'和'y2'賦值的拼寫錯誤。我的陰謀命令工作正常,但可能不顯示你想要的。顯然你應該根據你想要顯示的內容選擇你自己的繪圖方法。 –

+0

非常感謝您的幫助。我感謝你的努力Doug Lipinski –