在Matlab中使用meshz命令

时间:2014-11-05 04:34:49

标签: matlab plot matlab-figure

我已完成以下代码:

u=linspace(0,1,40);
v=linspace(0,1,40);
[u,v]=meshgrid(u,v);
x=u;
y=v.*sqrt(u);
z=x+y+1;
meshz(x,y,z)
xlabel('x-axis')
ylabel('y-axis')

其中给出了以下图像:

enter image description here

现在,我想将网格墙减少到x-y平面(z=0)。我尝试了以下,但没有用:

u=linspace(0,1,40);
v=linspace(0,1,40);
[u,v]=meshgrid(u,v);
x=u;
y=v.*sqrt(u);
z=x+y+1;
meshz(x,y,z)
xlabel('x-axis')
ylabel('y-axis')
v=axis;
v(5)=0;
axis(v)

产生以下图片:

enter image description here

我尝试了其他一些内容,例如上一个代码:添加hold on,再次调用meshz(x,y,z),但它们无效。如何将meshz墙向下延伸到x-y平面?

1 个答案:

答案 0 :(得分:3)

执行此操作的一种方法是通过某些meshz直接操纵handle graphics生成的'ZData'

...
h = meshz(x,y,z);   % Get handle
Z = get(h,'ZData'); % Get ZData
Z([1 end],:) = 0;   % Set border to 0, or other desired value
Z(2:end-1,[1 end]) = 0;
set(h,'ZData',Z);   % Set ZData
...

产生

enter image description here