最小二乘法擬合空間直線的原理及實現

2021-10-04 18:42:18 字數 1120 閱讀 8807

空間直線的簡化形式為:

即:

則有:

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...