Creating Surface Plot from a Matrix with 3 Columns

How do you create a surface plot using a matrix with 3 columns in Matlab? The first column would be the x-values, the second column would be the y-values, and the third column would be the z-values for the surface plot.

3 commentaires

KSSV
KSSV le 30 Juil 2018
We can help on getting data. Attach your data. We need to know whether your data is structured or unstructured.
I am generating data from a loop. Here is a simple example from the loop:
0.5000 0.5000 66.9052
0.5000 1.0000 57.3591
1.0000 0.5000 76.7805
1.0000 1.0000 66.9052
KSSV
KSSV le 30 Juil 2018
More data is needed.

Connectez-vous pour commenter.

 Réponse acceptée

KSSV
KSSV le 30 Juil 2018
A = [0.5000 0.5000 66.9052
0.5000 1.0000 57.3591
1.0000 0.5000 76.7805
1.0000 1.0000 66.9052] ;
x = A(:,1) ; y = A(:,2) ; z = A(:,3) ;
%%structured
xi = unique(x) ; yi = unique(y) ;
[X,Y] = meshgrid(xi,yi) ;
Z = reshape(z,size(X)) ;
figure
surf(X,Y,Z)
%%unstructured
dt = delaunayTriangulation(x,y) ;
tri = dt.ConnectivityList ;
figure
trisurf(tri,x,y,z)

11 commentaires

Sarah
Sarah le 30 Juil 2018
Thank you. What is the "unstructured" section doing/for?
KSSV
KSSV le 30 Juil 2018
YOu can plot in either of the ways. Thanks is accepting the answer..:)
Sarah
Sarah le 30 Juil 2018
How do you know if you are "structured" vs "unstructured"?
KSSV
KSSV le 30 Juil 2018
That's why I asked for complete data....:)
If X, Y have regaular arrangement it is structured or else unstructured.
Eric
Eric le 21 Oct 2018
Wonderful...thank you soooo much for this!!! I was tearing my hair out. :)
If you have n no matrix then can we draw multiple suface plot???
thank you KSSV!
KSSV - It works with your numbers, but it chokes on mine. I get an error on reshape.
Error using reshape
To RESHAPE the number of elements must not change.
Error in Iridium_Data (line 9)
Z = reshape(z,size(X)) ;
@Timothy Turk I also encoutered the same issue. To solve this, I removed all the rows of my matrix that were repeated. You can do with the command:
B = unique(A,'rows');
Hope that will be helpful to you or anyone that will come after us.
Thank you for the answer.
KSSV how can I trisurf this matrix I used your email program it does not work.
P1=[1;0;1];
P2= [2; 3;2];
P3= [-3;1;2];
P4= [6;2;3];
MatrixP=[1 2 -3 6 ;0 3 1 2;1 2 2 3];
%%structured
[X,Y] = meshgrid(MatrixP) ;
B = unique(A,'rows');
figure
surf(X,Y,Z)
%%unstructured
dt = delaunayTriangulation(x,y) ;
tri = dt.ConnectivityList ;
figure
trisurf(tri,x,y,z)

Connectez-vous pour commenter.

Plus de réponses (1)

x = speed ; y = Torque ; z = bsfc ;
%%structured
xi = unique(x) ; yi = unique(y) ;
[X,Y] = meshgrid(xi,yi) ;
Z = reshape(z,size(X)) ;
figure
pcolor(X,Y,Z)
%% griddata
xi = linspace(min(x),max(x));
yi = linspace(min(y),max(y)) ;
[X,Y] = meshgrid(xi,yi) ;
Z = griddata(x,y,z,X,Y)
pcolor(X,Y,Z)

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by