声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2184|回复: 2

[综合讨论] meshc等高线位置如何调整

[复制链接]
发表于 2016-9-12 13:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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


本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

发表于 2016-9-12 13:40 | 显示全部楼层
这种问题转换一下思路就可以很简单地解决——尽管很久没正式碰过MATLAB了...:victory:
看help中这个例子:
  1. [X,Y] = meshgrid(-3:.125:3);
  2. Z = peaks(X,Y);
  3. meshc(X,Y,Z);
  4. axis([-3 3 -3 3 -10 5])
复制代码

图形绘制完成之后等值线处于z=-10的位置,那么想改变其具体位置,则需要了解meshc的运作原理,在命令窗口敲:
  1. edit meshc
复制代码

可以发现与预想完全相同——所谓的meshc只不过就是mesh+contour3的命令集合,既然如此,调整contour3的绘制水平位置就可以圆满解决此问题,在line 64加断点调试,运行上述代码发现workspace中出现了line 59代码:
  1. a = get(cax,'zlim');
复制代码

的运行结果:
  1. a=[-10,10];
复制代码
原来contour3的绘制秘密就在与此,那么只要将meshc的所有命令另存一个新M文件meshc_bainhome.m,然后在这个新的meshc文件中将上述代码改为:
  1. a = 2*get(cax,'zlim');
复制代码

再运行如下代码:
  1. [X,Y] = meshgrid(-3:.125:3);
  2. Z = peaks(X,Y);
  3. meshc_bainhome(X,Y,Z);
  4. axis([-3 3 -3 3 -20 5])
复制代码

看看什么结果?其他我想可以不用再所说了。应该也有其他方法,比如寻找contour3的句柄然后hgtransform做平移变换、或者干脆自己写一个mesh+contour3的代码即可(这个我几年前写过,可惜找不到了)

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-15 10:47 , Processed in 0.069265 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表