【分享】将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'})
绘制正弦波形的图
谢谢
xiexie,学习一下 感谢分享啊,我一般都是用to workspace输出为数组,然后用plot来自己画的,感觉还是很麻烦,有了这个函数就轻松多了
页:
[1]