surf plot using meshgrid?

24 Ansichten (letzte 30 Tage)
alibaba alibabu
alibaba alibabu am 26 Apr. 2020
Bearbeitet: alibaba alibabu am 26 Apr. 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)

Akzeptierte Antwort

Tommy
Tommy am 26 Apr. 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 Kommentar
alibaba alibabu
alibaba alibabu am 26 Apr. 2020
Bearbeitet: alibaba alibabu am 26 Apr. 2020
Thx for prompt help.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

David Hill
David Hill am 26 Apr. 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';

Kategorien

Mehr zu Graphics Object Properties finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by