% 隨機生成一組(x,y,z),這些點的座標離乙個空間平面比較近
x0=1,l1=2;
y0=1,l2=2;
x=x0+rand(20,1)*l1;
y=y0+rand(20,1)*l2;
z=1+2*x+3*y;
scatter3(x,y,z,'filled')
hold on;
planedata=[x,y,z];
% 協方差矩陣的svd變換中,最小奇異值對應的奇異向量就是平面的方向
xyz0=mean(planedata,1);
centeredplane=bsxfun(@minus,planedata,xyz0);
[u,s,v]=svd(centeredplane);
a=v(1,3);
b=v(2,3);
c=v(3,3);
d=-dot([a b c],xyz0);
% 圖形繪製
xfit = min(x):0.1:max(x);
yfit = min(y):0.1:max(y);
[xfit,yfit]= meshgrid (xfit,yfit);
zfit = -(d + a * xfit + b * yfit)/c;
mesh(xfit,yfit,zfit);
MATLAB 利用SVD分解擬合三維平面
方法簡述 利用svd分解求擬合平面 擬合方程為ax by cz d,約束條件為a2 b2 c2 1,目標是使得盡可能多的點在平面上。構建矩陣為ax 0,將a矩陣進行奇異值分解之後,最小奇異值對應的特徵值向量即為擬合平面的係數向量。詳細的原理可以檢視 svd分解平面擬合原理 在這裡我舉的例子是利用餘震...
matlab擬合空間曲線。散點擬合三維曲線
問題 已知三組資料,就是直角座標系中的x,y,z的三個陣列,要求在matlab中擬合出這條空間曲線。帖子源資料 a 22.77,17.13,14.37,12.98,12.34,12.12,12.11,12.18,12.27,12.32,12.32,12.27,12.18,12.11,12.12,12...
利用matlab將三維資料擬合成三維曲線
擬合三維曲線貌似可以用相信回歸做,但是matlab有乙個自帶的polyfit函式,可以直接算出二維資料的擬合曲線,用的是最小二乘法的思想。思路其實很簡單,將兩條擬合的二維曲線組合在一起就是三維曲線了。先上 吧 clc clear all fb load leafcloud bend.txt fb l...