plot plane through set of 3d point
6 ビュー (過去 30 日間)
古いコメントを表示
Let's say : I have a set of 3d data (x,y,z) from experiment
data=[x1 y1 z1
x2 y2 z2
x3 y3 z3
x4 y4 z4
...........]
I want to plot the plane contain all points by total least square method. The result as follow. How can I plot like sample illustration?
0 件のコメント
回答 (1 件)
Roger Stafford
2018 年 2 月 28 日
編集済み: Roger Stafford
2018 年 2 月 28 日
If X, Y, and Z are vectors of the x,y,z coordinates of your points, do this:
dX = X-mean(X);
dY = Y-mean(Y);
dZ = Z-mean(Z);
XX = sum(dX.^2); YY = sum((dY.^2; ZZ = sum(dZ.^2);
XY = sum(dX.*dY); XZ = sum(dX.*dZ); YZ = sum(dY.*dZ);
A = [XX,XY,XZ;
XY,YY,YZ;
XZ,YZ,ZZ];
[V,D] = eig(A); % <--Corrected
[~,k] = min(diag(D));
Then
V(1,k)*(x-mean(X))+V(2,k)*(y-mean(Y))+V(3,k)*(z-mean(Z)) = 0 % <--Corrected
where V(:,k) is the eigenvector of A with the smallest eigenvalue, and gives the equation for the best fit plane through your points. (Note: The lowercase x, y, and z here refer to coordinates of the equation of the plane.)
You can plot this plane by using an appropriate meshgrid of x,y points along with solving for z in the plane equation making use of the 'surf' command.
3 件のコメント
Roger Stafford
2018 年 2 月 28 日
編集済み: Roger Stafford
2018 年 2 月 28 日
I made a mistake on the 'eig' function which I have corrected above. (Chalk it up to old age.)
参考
カテゴリ
Help Center および File Exchange で Surface and Mesh Plots についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!