plot plane through set of 3d point
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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
...........]
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/170834/image.png)
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?
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/170835/image.png)
0 commentaires
Réponses (1)
Roger Stafford
le 28 Fév 2018
Modifié(e) : Roger Stafford
le 28 Fév 2018
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 commentaires
Roger Stafford
le 28 Fév 2018
Modifié(e) : Roger Stafford
le 28 Fév 2018
I made a mistake on the 'eig' function which I have corrected above. (Chalk it up to old age.)
Voir également
Catégories
En savoir plus sur Surface and Mesh Plots dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!