Failing in creating a surface from three array
Show older comments
I am trying to create a surface from this dataset
x=[0.5 ; 0.624; 0.75;0.874; 0.9;1;1.124]
y=[0; 1.1;1; 0.9;0.6;0]
z=[0.726582; 0.629144; 0.714131; 0.499709; 0.668832; 0.664573]
I am using this code found in here
xi = unique(x) ; yi = unique(y) ;
[X,Y] = meshgrid(xi,yi) ;
Z = reshape(z,size(X)) ;
figure
surf(X,Y,Z)
but I get this error
"Error using reshape
Number of elements must not change. Use [] as one of the size inputs to automatically calculate the appropriate size for that
dimension.
Error in untitled2 (line 8)
Z = reshape(z,size(X)) ;"
I cannot understand what I am doing wrong.
Accepted Answer
More Answers (1)
Torsten
on 2 Sep 2022
1 vote
To create a surface, you need a z value for each combination of (x/y) values. Thus instead of a vector z with 6 elements you need a matrix of size (7x6).
2 Comments
SYML2nd
on 2 Sep 2022
x=[0.5 ; 0.624; 0.75;0.874; 0.9;1;1.124];
y=[0; 1.1;1; 0.9;0.6;0];
z=[0.726582; 0.629144; 0.714131; 0.499709; 0.668832; 0.664573];
[X,Y] = meshgrid(x,y);
Z = repmat(z,1,7);
surf(X,Y,Z)
But the surface plot only makes sense if you really have a function f with z(i,j) = f(x(i),y(j))
Categories
Find more on Surface and Mesh Plots in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
