找回密码
 注册
Simdroid-非首页
查看: 336|回复: 13

请问这种作图效果能在matlab中直接实现吗?

[复制链接]
发表于 2009-7-1 10:07:01 | 显示全部楼层 |阅读模式 来自 辽宁沈阳
本帖最后由 star19831106 于 2009-7-1 10:15 编辑


请问这种作图效果能在matlab中直接实现吗?
而不是通过放大,截图粘贴。
谢谢!!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2009-7-1 10:41:49 | 显示全部楼层 来自 浙江杭州
Simdroid开发平台
可以。Matlab 7.0 以上,用plottools即可
回复 不支持

使用道具 举报

 楼主| 发表于 2009-7-1 15:04:50 | 显示全部楼层 来自 辽宁沈阳
谢谢指导!
恕小弟愚钝!
可否再指导得详细一点,比如plottools在那个子图是通过哪些操作获得的。
不胜感激!!!
回复 不支持

使用道具 举报

发表于 2009-7-2 17:56:18 | 显示全部楼层 来自 大连理工大学
matlab绘图技巧:help plot,subplot,xlabel,ylabel,title!!!

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2009-7-2 21:14:41 | 显示全部楼层 来自 新疆乌鲁木齐
本帖最后由 bainhome 于 2009-7-2 23:52 编辑

plottool可能不行,因为好像不能解决图形层叠的问题。而4楼应该根本没有测试就让人去看help,因为最有可能的是subplot命令,这个命令根据我试验,不允许出现position有交集的情况。这样回答问题态度可不行,说不定别人对MATLAB比你还要熟悉哦。
我感觉这个问题用MATLAB画不太好,毕竟别人基本命令中的绘图框架已经定好了,要修改难度还不算太小。不如用asymptote+TeX来画这种图形:

另外我今天怎么上传jpg和png格式图片说是不支持格式,你们有这种情况吗?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2009-7-2 23:28:46 | 显示全部楼层 来自 浙江杭州
如果自己搞不懂的话,这有一个人家做好的了(matlab做的):zoomSoft-画中画缩放软件
回复 不支持

使用道具 举报

发表于 2009-7-3 00:01:38 | 显示全部楼层 来自 新疆乌鲁木齐
应该如果不是r2006a的话,就无法使用这个zoomsoft。发这个东东的同学没有给出解释、没有给出M文件,这样的东西很难推广、很难使人接受。
回复 不支持

使用道具 举报

发表于 2009-7-3 11:40:43 | 显示全部楼层 来自 香港
本帖最后由 ydlcsu 于 2009-7-3 11:43 编辑

不知道你所谓的直接实现是想一个命令直接搞定还是怎么的。如果只是用matlab来得的一个那样的图还是完全可以的,在2007版本下比较方便,因为可以通过交互界面来设置figure,axes等的属性。首先在figure中画好外面那个大图。然后选中画好的axes,拷贝,在原figure中直接粘贴,这时,figure中应该会有2个一样的axes,选中其中一个,调节大小和位置得到小图。接着设置小图的坐标范围以显示要放大的部分。最后添加虚线框和箭头,insert菜单下能找到。

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2009-7-3 13:08:09 | 显示全部楼层 来自 新疆乌鲁木齐
本帖最后由 bainhome 于 2009-7-3 13:11 编辑

赞!
ydlcsu所说直接copy轴提醒了我,前面困在了对subplot的修改上思路钻了牛角尖...不过轴无需copy,直接生成一个会更加灵活,给出代码完整此问题:
1.command windows输入:
  1. >> CordPositionMainAxes=[0,0,.3,.3];
  2. >> CordPositionSubAxes=[.7,.6,.2,.2];
复制代码
2.编写如下函数实现轴放大:
  1. function createfigure(CordPositionMainAxes,CordPositionSubAxes)
  2. CordPositionArrowX=[CordPositionMainAxes(3),CordPositionSubAxes(1)];
  3. CordPositionArrowY=[CordPositionMainAxes(4),CordPositionSubAxes(2)+.1];
  4. annotation('arrow',CordPositionArrowX,CordPositionArrowY);
  5. x=linspace(0,pi);
  6. y=sin(x);
  7. plot(x,y);
  8. hold on
  9. rectangle('position',CordPositionMainAxes,'linestyle','--')
  10. axis square
  11. axes('position',CordPositionSubAxes)
  12. box on
  13. plot(x,y,'red')
  14. axis([0,.3,0,.3])
  15. axis square
复制代码
前面我的说法过于武断,致歉。

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2009-7-3 17:17:32 | 显示全部楼层 来自 辽宁沈阳
谢谢各位老大的帮助!
特别是bainhome 先生!
由于对matlab相对较熟。
数据也是用matlab获得的。
才想着用matlab完成。
后来了解到这种图用origin应该能更容易一些!
再次谢谢大家!
回复 不支持

使用道具 举报

发表于 2009-9-3 16:23:05 | 显示全部楼层 来自 广东深圳
本帖最后由 hjdwg 于 2009-9-3 16:24 编辑

1# star19831106
有那么费事吗?拷贝粘贴就解决了。非要编程也没办法。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

发表于 2009-9-4 11:25:25 | 显示全部楼层 来自 四川成都
axes函数中的'position'参数应该可以实现,一个例子
  1. x = 0 : 0.01 : 2 * pi;
  2. y1 = sin(x); y2 = cos(x); y3 = sin(x) + cos(x);
  3. plot(x, y1)
  4. axes('position', [0.55 0.65 0.3 0.2])
  5. plot(x, y2)
  6. xlabel('y2 = cos(x)');
  7. axes('position', [0.15 0.15 0.3 0.2])
  8. plot(x, y3)
  9. xlabel(' y3 = sin(x) + cos(x)');
复制代码

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2009-9-8 19:16:02 | 显示全部楼层 来自 北京海淀
那个图形明显是用TECPLOT做的 。
回复 不支持

使用道具 举报

发表于 2009-9-12 23:59:53 | 显示全部楼层 来自 广西贵港
是SMTH MATHTOOLS版的hjdwg吧?
1# star19831106
有那么费事吗?拷贝粘贴就解决了。非要编程也没办法。
hjdwg 发表于 2009-9-3 16:23
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-5-19 15:44 , Processed in 0.061527 second(s), 21 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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