matlab - 在 Simulink 中绘制实时信号的 Matlab 功能 block 内部

标签 matlab graph plot real-time simulink

我在 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/

相关文章:

java - 将两个数组中的点绘制成图表

matlab - 如何在 MATLAB 中绘制三阶张量

r - 结合 `for loop` 和 ggplotGrob

matlab - MATLAB 中的高效低阶逼近

r - 通过 y=0 创建一条直线模糊的点/虚线

java - 添加颜色到自定义边缘

python - 如何获取所有子图上的标签和轴标题(python)

matlab - 每当除以 0 或出现 Inf 值时停止或暂停运行 MatLab

Matlab:查找矩阵每一列首次出现的行索引(不使用循环)

matlab - 编译 MATLAB 以进行部署,包括工具箱