Failing in creating a surface from three array
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
SYML2nd
el 2 de Sept. de 2022
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 comentarios
Respuesta aceptada
Star Strider
el 2 de Sept. de 2022
Editada: Star Strider
el 2 de Sept. de 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 comentarios
Más respuestas (1)
Torsten
el 2 de Sept. de 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 comentarios
Torsten
el 2 de Sept. de 2022
Editada: Torsten
el 2 de Sept. de 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))
Ver también
Categorías
Más información sobre Surface and Mesh Plots en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!