空间离散点和合成
1 原理
根據空間中的離散點進行直線擬合,其原理很簡單,就只最小化眾散點到該直線的最小距離。有一個最先要的知識,該直線必過眾散點的平均值,那么我們需要做的就是尋找該直線的方向向量。
? ?根據空間幾何知識,我們可以知道,利用協方差矩陣的奇異變換,得到的最大奇異值對應的奇異向量就是該直線的方向。
2 代碼設計
<span style="font-size:18px;">% 隨機生成一組點,這寫點距離直線l比較近,l的過點[1,1,1],方向向量為[1,2,3] lineData=bsxfun(@plus, [1,1,1], (-1:.1:1).'*[1,2,3]); Noise=rand(size(lineData))*.1; lineData=lineData+Noise; scatter3(lineData(:,1), lineData(:,2), lineData(:,3),'filled') hold on;% 擬合的直線必過所有坐標的算數平均值 xyz0=mean(lineData,1), % 協方差矩陣奇異變換,與擬合平面不同的是 % 所得直線的方向實際上與最大奇異值對應的奇異向量相同 centeredLine=bsxfun(@minus,lineData,xyz0); [U,S,V]=svd(centeredLine); direction=V(:,1);% 畫圖 t=-8:0.1:8; xx=xyz0(1)+direction(1)*t; yy=xyz0(2)+direction(2)*t; zz=xyz0(3)+direction(3)*t; plot3(xx,yy,zz)</span></pre><pre>3 實驗結果
總結
- 上一篇: 大数据可视化软件//完美的SCI配图
- 下一篇: 即时通讯的企业应用和个人应用的区别