Dominics 发表于 2016-9-12 13:37

meshc等高线位置如何调整

用matlab里面的surfc或meshc命令绘制的三维图形时,等高线所在的投影面是计算机默认的平面。如何让等高线落在一指定平面?
做过用axis命令来限制一下坐标轴的范围,先从图中观察得出的默认等高线的平面位置,然后把axis中的最小值取这个值.默认等高线在Z=-400的平面上, 设置axis, z的坐标范围为[-600,200]我想让等高线落在z=-600的平面上, 但结果等高线还是在z=-400的平面上, 应该怎样处理呢?


Osmond 发表于 2016-9-12 13:40

这种问题转换一下思路就可以很简单地解决——尽管很久没正式碰过MATLAB了...:victory:
看help中这个例子: = meshgrid(-3:.125:3);
Z = peaks(X,Y);
meshc(X,Y,Z);
axis([-3 3 -3 3 -10 5])
图形绘制完成之后等值线处于z=-10的位置,那么想改变其具体位置,则需要了解meshc的运作原理,在命令窗口敲:
edit meshc
可以发现与预想完全相同——所谓的meshc只不过就是mesh+contour3的命令集合,既然如此,调整contour3的绘制水平位置就可以圆满解决此问题,在line 64加断点调试,运行上述代码发现workspace中出现了line 59代码:
a = get(cax,'zlim');
的运行结果:
a=[-10,10];原来contour3的绘制秘密就在与此,那么只要将meshc的所有命令另存一个新M文件meshc_bainhome.m,然后在这个新的meshc文件中将上述代码改为:
a = 2*get(cax,'zlim');
再运行如下代码:
= meshgrid(-3:.125:3);
Z = peaks(X,Y);
meshc_bainhome(X,Y,Z);
axis([-3 3 -3 3 -20 5])
看看什么结果?其他我想可以不用再所说了。应该也有其他方法,比如寻找contour3的句柄然后hgtransform做平移变换、或者干脆自己写一个mesh+contour3的代码即可(这个我几年前写过,可惜找不到了)

页: [1]
查看完整版本: meshc等高线位置如何调整