声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3614|回复: 11

[绘图技巧] Matlab中关于图像的输出讨论

[复制链接]
发表于 2007-9-19 08:14 | 显示全部楼层 |阅读模式

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

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

x
由于工作的原因,将matlab中关于图像输出的部分问题总结了一下,主要集中在优化标注问题,权做抛砖引玉,请大家共同讨论。
在总结的过程中,我在论坛上搜索了花如月兄曾经发过的标注贴,地址如下:
http://forum.vibunion.com/thread-49363-1-1.html
---------------------------------------------------------------------
关于matlab的图像结构,相信大家都有所了解,figure->axes->line,后者从属于前者。
有些时候,比如做EOF分解时,需要取出前四个或八个主分量,分别做图,但在这个时候,需要调整的是line,却希望保持同一个axes不变,毕竟是处理的一个问题,横纵坐标及头注都大致相同,但如果每做一图都要标注一次就太麻烦了。
我还是用花如月兄举的两个例子说事:
%% Create figure
figure1 = figure(…
'PaperPosition',[-3.04 5.922 27.07 17.85],...
'PaperSize',[20.98 29.68] );
在这里我有个问题,还没有解决, 请大家共同讨论。就是关于这两个figure中的选项,无论我怎样调整参数,都看不出来变动效果,不知是我版本的问题还是怎样?
%% Create Axes
axes1 = axes(‘Parent’,figure1);
title = (axes1, {‘y1=exp^{-x}’; ‘y2=sin(x)’});
xlabel = (axes1, ‘x’);
ylabel = (axes1, ‘y’);
box(axes1,’on’);
%% 一般在matlab中,以平面图为例,图像的四条边线中只有两条坐标轴呈黑
%% 色,而这个语句的作用是使除坐标轴外的其它两条图形边线也呈现黑色。

hold(axes1,’all’);

%% 这个语句的作用是:在其后运行的所有画图语句(plot, fplot, line, etc)都会将线条输出到同一张图像

%% 中,换言之线条是层叠输出的。因而,在后面的输出中,需要注意设定不同的线条使用不同的颜色或样式,
set(axes1,’NextPlot’,’replacechildren’);
%% 这个语句的作用是:在画图的过程中,后运行的画图语句会替换掉前面已有的线条,然而会保留title及x、y轴注释不变。当需要替换上述三者时,这句应省略。

这样之后,就有机会能利用循环实现流水做业了,只要后面再加上一个print模块,让计算机自动出图,而不用每张图都自己画了。

%% Create file
Filename1 = ‘Filename’,’C:\Matlab\1.eps’;
print('-depsc',Filename1);
---------------------------------------------------------------------------------
差不多就先这些,请大家批评指正。

评分

1

查看全部评分

回复
分享到:

使用道具 举报

发表于 2007-9-19 13:16 | 显示全部楼层
欢迎分享你们的经验:@) ,不过要保证贴上来的代码别人可以用。烦劳楼主把你测试通过的代码贴上来,你举例子用的代码里有很多错误。
 楼主| 发表于 2007-9-19 13:48 | 显示全部楼层
十分抱歉,花兄所指的错误应该大部分是由于代码的全半角问题。
由于这贴是在word里面写成的。

等我下了这堂课,就回来修改。
 楼主| 发表于 2007-9-19 16:19 | 显示全部楼层
测试过的源码如下,感谢花兄的指正。

%% Create figure
figure1 = figure(...
  'PaperPosition',[-3.04 5.922 27.07 17.85],...
  'PaperSize',[20.98 29.68]);


%% Create axes
axes1 = axes('Parent',figure1);
title(axes1,{'y1=exp^{-x}';'y2=sin(x)'});
xlabel(axes1,'x');
ylabel(axes1,'y');

box(axes1,'on');

hold(axes1,'all');

set(axes1,'NextPlot','replacechildren');

%% print figure
Filename1 = 'D:\S.SONG\OUT\2.eps';
print('-depsc',Filename1);
发表于 2007-10-4 18:55 | 显示全部楼层
请教一下
怎么样在程序中动态建立axes的个数
发表于 2007-10-4 19:07 | 显示全部楼层
axes 建立控件,delete 撤销控件

[ 本帖最后由 ChaChing 于 2010-7-5 21:12 编辑 ]
发表于 2007-10-4 21:01 | 显示全部楼层
我是想我的窗体上见n的axes 进行加载医学图象
就用axes1 = axes('Parent',figure1)这样类似吗?
希望能够得到您的帮助
发表于 2007-10-4 21:14 | 显示全部楼层
你是用 fig 文件方式的 GUI 还是 m 文件方式的 GUI ?如果你对两者不太熟悉,建议先阅读本版关于 GUI 心得的精华贴

[ 本帖最后由 ChaChing 于 2010-7-5 21:12 编辑 ]
发表于 2007-10-7 11:45 | 显示全部楼层
我是用的m文件方式的GUI,可以产生的是的的父对象好想只能是figure,而且我用position属性不能够定位
发表于 2007-10-7 11:52 | 显示全部楼层
错别字太多,看不懂,请重新编辑你的帖子

[ 本帖最后由 ChaChing 于 2010-7-5 21:11 编辑 ]
发表于 2007-10-7 15:05 | 显示全部楼层

回复 #11 eight 的帖子

不好意思,早上发的比较匆忙;
是这样的,我想在Panel中动态地创建一些Axes(在m程序中添加),来放一些医学图片;
但现在是好像出错,主要就是要解决这个问题;
麻烦指导一下

[ 本帖最后由 eight 于 2007-10-7 15:31 编辑 ]
发表于 2007-10-7 15:46 | 显示全部楼层
按照楼主给的代码就可以了,不知道你出错在哪里。至于 axes 位置问题,利用 position 属性就可以设置了,例如:

  1. hFigMain = figure;
  2. hAxes_A = axes('Parent',hFigMain,'Position',[0 0 140 150]);
复制代码
建议先阅读一下本版置顶帖,然后重新叙述清楚你的问题

[ 本帖最后由 ChaChing 于 2010-7-5 21:12 编辑 ]

评分

1

查看全部评分

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

本版积分规则

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

GMT+8, 2024-12-12 03:38 , Processed in 0.087806 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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