视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
matlab simulink 示波器 scope 图片保存
2025-10-02 15:01:47 责编:小OO
文档
 Matlab Figure 图形保存以及 Simulink 中 Scope 窗口坐标标注(label)的设置 收藏 

 

1、我们使用Matlab绘制出数据的各种图形需要保存的时候,不少同学是直接用屏幕截图的办法来做的,但这样出来的图并不清晰,不便于后续应用和处理,并且往往不符合发表论文的要求,很多论文是要求用 .eps 格式的图片的。实际上,我们可以有下面两种更好的处理方法:

(1)在论文里插入图片

在Matlab的Figure窗口,点击菜单栏的Edit,选择Copy Figure,然后转到你的文档界面,把光标放到需要插入图片的位置,然后Ctrl+C,你就可以得到比较清晰的图片了。

需要注意的是,这时候的图片有相当一部分空白区域,你可以用word图片工具栏的‘裁剪’功能把图片空白区域消除掉。

另外,如果需要对图片的大小进行拉伸,最好不要直接用鼠标拖拉,这样容易导致图中的点线分布变形,可以右键点击图片,选择‘设置图片格式’,在‘大小’标签的‘缩放’栏里,设置图片的大小。

(2)直接保存 Figure 

为了便于后续处理和应用,建议大家形成一个良好习惯,即把绘制所得的Figure窗口直接保存为.fig文件,以后你就可以多次打开它,对图像进行修改处理,例如加注标签(label)等,也可以打开.fig文件把所显示的图像转存为其它格式的文件,例如.eps、等。

2、在做Simulink仿真时,使用的Scope波形显示模块实际上也是一种Figure窗口,不过Matlab把Scope的菜单栏隐藏起来,只提供了几个有限的参数设置。如果需要对Scope中的图加上坐标、更改界面背景色等,没有菜单栏就基本上无从下手了。

 

可以在打开你的mdl文件之后,在Matlab的命令行输入以下指令来恢复显示Scope的Figure菜单栏:

>> set(0,'ShowHiddenHandles','on');

>> set(gcf,'menubar','figure');

这样Scope窗口就如下所示:

 

然后点击菜单栏的 Edit ,可以选择 Copy Figure 来保持波形图,也可以选择 Figure Properties 来调整 Scope 的各种图形属性,包括添加 xlabel、ylabel、title,更改背景颜色,调整波形曲线的线型、粗细等等:

 

P.S.:除了上面说的那两行指令外,在网上还找到一段相似的程序,不过我使用时Matlab提示第4行代码出现Error,不知是何原因,也贴在这里大家分析下吧,呵呵。

shh = get(0,'ShowHiddenHandles'); 

set(0,'ShowHiddenHandles','On') 

set(gcf,'menubar','figure') 

set(gcf,'CloseRequestFcn','closereq') 

set(gcf,'DefaultLineClipping','Off') 

set(0,'ShowHiddenHandles',shh) 

方法一:使用Matlab命令,直接保存为图片

set(0,'ShowHiddenHandles','On')

set(gca,'color','w')  %设置背景颜色

方法二:使显示figure的菜单

set(0,'ShowHiddenHandles','On')

set(gcf,'menubar','figure')

用simout把波形输出,存储格式为array即;同时把时间一块放simout输出!用plot(t,simout)即可把图画出来!简单一点就是把采集的数据保存到To file文件里后,直接load 变量名,用plot命令就可以得到图,再用附件自带的画图工具就可以剪辑下来了

要使用to workspaces模块,将信号y以及时间t的信号送到工作空间(如图所示),t,和y是在to workspaces模块自定义的变量名,注意在save format 选 array!然后用plot(t,y)绘图,绘出图后,使用edit菜单里的copy figure拷贝图形,再到word里粘贴即可,这样拷贝的图形效果较好。你可以在edit菜单里的copy options设置clipboard format为metafile,这样拷的图形不会有黑边框!

看到网上有的同行问怎么改示波器的背景,把示波器波形复制到Word中,我有两种方法,第一种是我一个同学告诉我的,通过命令对示波器进行操作。

具体如下

shh = get(0,'ShowHiddenHandles');

set(0,'ShowHiddenHandles','On')

set(gcf,'menubar','figure')

set(gcf,'CloseRequestFcn','closereq')

set(gcf,'DefaultLineClipping','Off')

set(0,'ShowHiddenHandles',shh)

    如何将matlab中的scope图形保存下来,或者直接保存到word中呢?其实至少有三种方法,下面就详细说明一下这三种方法.

1、软件截图,这个就不多说了

2、使用Matlab命令,直接保存为图片,在这个方法中要注意打开隐藏的句柄,运行之后就在Matlab的当前路径下得到一个白色背景的jpg文件.

  set(0,'ShowHiddenHandles','On')

  set(gca,'color','w')

  

3、使用figure的菜单来保存图片

  set(0,'ShowHiddenHandles','On')

  set(gcf,'menubar','figure')

此时那个scope是不是多了一个菜单栏了,现在使用edit→copy figue就可以把图片复制到剪贴板中了.

  

下面说一下Simulink利用Scope输出及绘制仿真波形技巧

  在用Simulink做仿真时,我们经常会用到示波器Scope来观察波形,它可以对波形进行局部放大、按横、纵座标放大,非常方便,但是如果我们要保存波形时,就最好别直接拷贝Scope波形了,因为它的背景是黑的,而且不能进行线形修改和标注,不适合作为文档用图。一般的做法是将数据输出到工作空间,然后用画图指令Plot画图。输出到工作空间的方法一般有这么几种:

  1.添加To Workspace模块;

  2.添加out模块;

  3.直接用Scope输出。

在此我们选用方法3来说明用法。当然不是说放一个Scope就能数出数据的,需要对Scope进行设置。设置界面如下:把Limit data points to last勾掉,因为很有可能你的数据会超过5000个。勾选Save data to Workspace,变量类型可以选结构体,结构体带时间,以及向量.下面以一个例子分别介绍三种变量类型的画图方法。

1.输出类型为向量形式。从图上看到,输出了两维时间序列,而实际输出到工作空间的变量ScopeData为三维序列,其中第一列为时间,这正好为我们画图提供了方便。我们可以采用画图命令如下:

  figure;

  plot(ScopeData(:,1),ScopeData(:,2),'LineWidth',1.5);

  hold on;

  plot(ScopeData(:,1),ScopeData(:,3),'r:','LineWidth',1.5);

  legend('正弦波','锯齿波');hold off;

  当然你还可以采用其他绘图方式,如采用Subplot方式。

2.输出类型为Structure with Time。即结构体带时间。我们可以看一下这个结构体包含哪些东西。在Command Window里直接输入变量名。

  ScopeData =

  time: [51x1 double]

  signals: [1x1 struct]

  blockName: 'untitled/Scope'

  可见,该结构体包含了时间序列,信号结构体,以及我的框图名。实际上我们的输出信号都包含在signals这个结构体里了,我们接着可以再看看signals结构体的组成部分。我们输入ScopeData.signals。

  ans =

  values: [51x2 double]

  dimensions: 2

  label: ''

  title: ''

  plotStyle: [0 0]

  可以看到,values是一个51x2的double型矩阵,它正好是我们输出的数据。我们采用这样的画图命令即可完成画图:

  figure;

  plot(ScopeData.time,ScopeData.signals.values(:,1),'LineWidth',1.5);

  hold on;

  plot(ScopeData.time,ScopeData.signals.values(:,2),'r:','LineWidth',1.5);

  legend('正弦波','锯齿波');hold off;

3.对于Structure类型,正好是Structure with time的精简版,因为它的时间为空,因此你必须用其他方式获得时间。下载本文

显示全文
专题