kokyo52 发表于 2008-12-6 11:59:17

【分享】将simulink示波器数据绘制成图形的函数

将simulink示波器数据绘图,实际上主要是结构体数据的取得问题,并无甚技术含量,似乎网上也有N多代码。
此函数的优势,在于可以将图形属性中的title、xlabel、ylabel、xtick、xticklabel等等东东一并写上,这样,在做多组测试的时候,绘制多个类似的图,再也不必重新title、xlabel...一番,省时省力。偶天天用此函数,十分方便,故拿出分享一下

function D0(In,varargin)
%   语法:
%   D0(ScopeData)   将示波器保存的数据绘制成图形,数据必须是Structure with time
%
%   D0(ScopeData,S) S表示线形和/或线的颜色
%
%   D0(ScopeData,S,'PropertyName1',PropertyValue1,'PropertyName2',PropertyValue2,...)
%   对图形中不同的项目设置不同的参数,其中,如果PropertyName是句柄的名称,
%   那么PropertyName应该是该句柄中"String"的值。第二项S可以不写
%
%   例如,D0(ScopeData,'title','I love simwe')表示绘制一幅图,标题是“I love simwe”
%   而D0(ScopeData,'r','title','I Love Matlab','xtick',,'xticklabel',{'I','Love','Simwe'})
%   就比较复杂了,自己可以试一下,hehe
%
%   See also PLOT, SET.
%   Copyright kokyo52
%   2008-12-6 发布于 simwe
LengthVarargin = length(varargin);
%%%%%%%
% 绘图
%%%%%%%
if mod(LengthVarargin,2) == 0                   % 没有输入颜色/线形参数
    plot(In.time, In.signals(1).values);
    TheBegin = 1;
else                                          % 输入了颜色/线形参数
    plot(In.time, In.signals(1).values, varargin{1});
    TheBegin = 2;
end
xlim();    % 默认值
xlabel('t(s)');                                 % 默认值
title('示意图');                              % 默认值
for i = TheBegin:2:LengthVarargin
    PropertyName = varargin{i};
    Value = varargin{i+1};
    h = get(gca,PropertyName);
    if ishandle(h)
      set(h,'String',Value);
    else
      set(gca,PropertyName,Value);
    end
end
grid on;

此函数需要示波器/to workspace模块保存数据的时候使用 Structure with time,有人可能喜欢Structure,时间自己再取,考虑到各个示波器可能采样时间不同(偶常常这样设置,不关紧的数据可以少存一些hehe),因此采用Structure with time。当然大家可以根据需要自己修改,甚至改成多维的数据(多个signals)也都是很方便的,我的最高一次画6个subplot图

下图是用命令

D0(ScopeData,'title','I love simwe','ylabel','x(m)','xtick',,'xticklabel',{'I','Love','Simwe'})

绘制正弦波形的图

postwar 发表于 2008-12-8 11:08:42

谢谢

xiexie,学习一下

zp2000 发表于 2008-12-9 08:32:22

感谢分享啊,我一般都是用to workspace输出为数组,然后用plot来自己画的,感觉还是很麻烦,有了这个函数就轻松多了
页: [1]
查看完整版本: 【分享】将simulink示波器数据绘制成图形的函数