空間直線的簡化形式為:
即:
則有:
data = load('data.txt');%12行3列資料,x,y,z
xdata=data(:,1)';%讀取n行,一列資料,並轉置
ydata=data(:,2)';
zdata=data(:,3)';
l=length(xdata);%獲取陣列長度
zm=[zdata;ones(1,l)];%對應為12列資料
mm=zm*zm';
xm=xdata*zm';%1*2
ym=ydata*zm';%1*2
a=(xm/mm);%1行*2列,用xm/mm比xm*inv(mm)速度快
b=(ym/mm)';
z1=400:430;%設定直線z的範圍
x1=a(1)*z1+a(2);%空間直線子方程1:x=a*z+b
y1=b(1)*z1+b(2);%空間直線子方程2:y=c*z+d
plot3(x1,y1,z1,'r',xdata,ydata,zdata,'o');
axis([20 60,3,5,400,500])
空間直線方程x=az+b;y=cz+d中的a,b,c,d,即為最後求得的a(1),a(2),b(1),b(2)。 最小二乘法 直線擬合
功能描述 利用最小二乘法求斜率 xytopx 截距 方法1 xytopy 斜率 ncount 點數 void min2method double xytopy,double xytopx,int x,int y,int ncount graphics.drawline pen,point x i y...
最小二乘法簡解及空間直線擬合
通常我們在對一些資料進行直線,圓,圓柱,圓球等規則幾何體進行擬合時,需要用到最小二乘法,只需要使其平方差最小,即可得到相應幾何體的數學表示式。一 最小二乘法 例如一組資料f 需要通過這組資料得到一條直線,設該條直線為 y ax b 使得 ax b 的輸出盡可能接近,從而使得 值和真實值之間的方差最小...
最小二乘法擬合直線 c 程式
point.h class point point類的宣告 float getx float gety friend float linefit point l point,int n point 友元函式 int型變數為點數 private 私有資料成員 float x,y end of poin...