我在 Simulink
上运行仿真,并且输出信号在仿真期间发生变化。我想在每一步都绘制它们。我可以做的是使用 to Workspace
block 将它们传输到 Matlab
,但是我只能在模拟完成后进行绘图。我想绘制模拟每个时刻的值。
我尝试过的:
提前创建一个图形:figure(1)
并在其上绘制静态图。然后我使用
Simulink
中的Matlab
函数:
function fcn(x,y)
coder.extrinsic('plot')
plot(x,y,'s','Markersize',8,'MarkerFaceColor','g','erasemode','background')
其中 x 和 y 是我的信号,作为 matlab 功能 block 的输入。然而,这会导致在每个时间步中绘制 x 和 y,但我只想在图中绘制信号的最后一个值并删除之前的值,换句话说,刷新绘图,以便它将充当动画。我怎样才能做到这一点?提前致谢
最佳答案
我认为您的代码应该可以工作,只需进行一些小的修改:
如果我是你,我会执行以下操作:
在模型回调中,在 InitFcn
回调中定义您的图形:
fig_h = figure;
ax_h = axes;
set(ax_h,'Xlim',[0 12],'YLim',[0 12]) % or whatever axes limits you want
然后在 MATLAB Function 模块中:
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
关于matlab - 在 Simulink 中绘制实时信号的 Matlab 功能 block 内部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26999125/