surf plot using meshgrid?
21 次查看(过去 30 天)
显示 更早的评论
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)


0 个评论
采纳的回答
Tommy
2020-4-26
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 个)
David Hill
2020-4-26
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';
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Graphics Object Properties 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!