surf plot using meshgrid?

21 visualizaciones (últimos 30 días)
alibaba alibabu
alibaba alibabu el 26 de Abr. de 2020
Editada: alibaba alibabu el 26 de Abr. de 2020
Good day
Pleas advise for code error. First figure is OK. 2nd one is incorrect.
Whei statments z<100 and 100<=z<200 are not taken in to accounte?
x=0:300;
y=x;
[xx,yy]=meshgrid(x,y);
z=(xx+yy)/2;
figure
surf(x,y,z)
if z<100;
k=z;
elseif z>=100 & z<200;
k=100;
else
k=z-100;
end
figure
surf(x,y,k)

Respuesta aceptada

Tommy
Tommy el 26 de Abr. de 2020
As z is an array, the following two statements
if z<100
and
elseif z>=100 & z<200
will only be true if every element within z satisfies the conditions, so you always end up with the third result (k=z-100).
To apply the if elseif statements to every element within z, try
x=0:300;
y=x;
[xx,yy]=meshgrid(x,y);
z=(xx+yy)/2;
figure
surf(x,y,z,'EdgeColor','none')
k = z;
k(z>=100) = z(z>=100)-100;
k(z>=100&z<200) = 100;
figure
surf(x,y,k,'EdgeColor','none')
  1 comentario
alibaba alibabu
alibaba alibabu el 26 de Abr. de 2020
Editada: alibaba alibabu el 26 de Abr. de 2020
Thx for prompt help.

Iniciar sesión para comentar.

Más respuestas (1)

David Hill
David Hill el 26 de Abr. de 2020
y=x;
[xx,yy]=meshgrid(x,y);
z=(xx+yy)/2;
figure
s=surf(xx,yy,z);
s.EdgeColor = 'none';%turns black if too many points
if z<100
k=z;
elseif z>=100 & z<200
k=100;
else
k=z-100;
end
figure
f=surf(xx,yy,k);
f.EdgeColor = 'none';

Categorías

Más información sobre Graphics Object Properties en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by