Failing in creating a surface from three array
8 views (last 30 days)
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.
0 Comments
Accepted Answer
Star Strider
on 2 Sep 2022
Edited: Star Strider
on 2 Sep 2022
x=[0.5 ; 0.624; 0.75;0.874; 0.9;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];
N = 10;
xv = linspace(min(x), max(x), N);
yv = linspace(min(y), max(y), N);
[X,Y] = ndgrid(xv, yv);
Z = griddata(x, y, z, X, Y);
figure
surfc(X, Y, Z)
grid on
xlabel('X')
ylabel('Y')
zlabel('Z')
view(70,30)
.
0 Comments
More Answers (1)
Torsten
on 2 Sep 2022
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
Torsten
on 2 Sep 2022
Edited: Torsten
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))
See Also
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!