首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Simulink环境下Matlab函数块内实时信号的绘制

Simulink环境下Matlab函数块内实时信号的绘制
EN

Stack Overflow用户
提问于 2014-11-18 16:26:51
回答 2查看 5.7K关注 0票数 2

我有一个仿真运行在Simulink和输出信号变化在仿真过程中。我想在每一步都画出它们。我可以做的是使用to Workspace块将它们传输到Matlab,但只有在模拟完成后才能绘制。我想在模拟的每一刻绘制出这个值。

我试过的是:

预先创建一个图形为:figure(1),并在其上绘制一个静态图。然后我用

Matlab函数在Simulink中:

代码语言:javascript
复制
function fcn(x,y)
coder.extrinsic('plot')
plot(x,y,'s','Markersize',8,'MarkerFaceColor','g','erasemode','background')

其中x和y是我输入matlab函数块的信号。然而,这会导致在每个时间步骤中绘制x和y,但我只想在图形上绘制信号的最后一个值,并删除前面的信号,换句话说,刷新绘图,使其充当动画。我怎样才能做到这一点?提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-18 20:20:31

我认为您的代码应该可以工作,只需做一些小的修改:

如果我是你,我会做以下几件事:

在模型回调中,在InitFcn回调中定义您的图形:

代码语言:javascript
复制
fig_h = figure;
ax_h = axes;
set(ax_h,'Xlim',[0 12],'YLim',[0 12]) % or whatever axes limits you want

然后在MATLAB函数块中:

代码语言:javascript
复制
function fcn(x,y)
%#codegen
coder.extrinsic('plot')
plot(x,y,'s','Markersize',8,'MarkerFaceColor','g','erasemode','background')
set(gca,'XLim',[0 12],'Ylim',[0 12]) % or whatever axes limits you want
票数 2
EN

Stack Overflow用户

发布于 2014-11-18 20:11:14

你只需要调用绘图来动画你的数据,你只需要更精细的功能。您应该创建一个plot_fcn并使该函数成为外部函数。假设标量输入范围为0到100的plot_fcn的一个示例实现是

代码语言:javascript
复制
function plot_fcn(x,y)

persistent f h
if isempty(f)
    f = figure;
    h = plot(x,y,'s','Markersize',8,'MarkerFaceColor','g','erasemode','background');
    axis([0 100 0 100]);
    axis manual
end
figure(f);
set(h, 'XData', x);
set(h, 'YData', y);

然后,您可以将此函数称为

代码语言:javascript
复制
function fcn(x,y)
coder.extrinsic('plot_fcn')
plot_fcn(x,y);

还检查了其他问题,有关动画在MATLAB绘图。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26999125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档