【问题标题】:How to plot array Y against X in Simulink?如何在 Simulink 中绘制数组 Y 和 X?
【发布时间】:2023-03-11 23:35:02
【问题描述】:

我想在仿真运行时构建一些储罐配置文件并在 Simulink 中将它们可视化。在 Matlab 中,我通常输入:

plot(dX, Y), grid;

其中dXY 是具有20 个元素的数组(例如)。 Simulink 中是否有能够绘制此图的范围或其他东西? X-Y 图仅绘制标量 :(

【问题讨论】:

    标签: plot simulink


    【解决方案1】:

    如果我正确理解您的问题,您的 simulink 模型具有信号 dX 和 Y,每个信号的尺寸为 20x1。所以信号本身就是向量,其值会随着时间而变化。如果是这种情况,那么您会期望在模拟运行时将其可视化为一种动画。也就是说,在 simulink 仿真的每个时间步,你都会生成一个 X-Y 图来说明向量 dX 和 Y 之间的关系。

    据我所知,Scope 和 X-Y Graph 块不支持此用例。如果您的信号是随时间变化的标量值,那么 X-Y 图表将是可行的方法。但正如您所说,由于您正在处理随时间变化的向量,因此 X-Y 图表并没有那么有用。

    所以这可能是一个非常快速和肮脏的解决方案,但您可能想考虑只使用 MATLAB 功能块并从那里调用绘图函数。例如,块的内容可能如下所示:

    function fcn(x,y)
    %#codegen
    
    coder.extrinsic('plot')
    plot(x,y)
    % insert additional code as needed to turn on grid, setup axis limits, etc.
    

    MATLAB 功能块有两个输入,您可以将信号 dX 和 Y 输入其中。

    【讨论】:

    • 是的。这就是我想要的——动画(实时模拟)。您的解决方案有效。谢谢!
    • 但是,模拟速度慢了很多:(
    • 如果您使用的是连续采样时间或快速离散采样时间,您可能希望以较慢的离散采样时间运行 MATLAB 功能块,这样动画就会更新,例如每秒更新一次,并且不会不要过多地减慢模拟速度。您必须使用适当的 Rate Transition 模块来往/从连续/快速离散采样时间从/到较慢离散采样时间。
    • 是的,不幸的是,像我建议的那种快速而肮脏的解决方案通常具有缓慢而肮脏的性能。不过,我认为 am304 提供了一个很好的改进。
    猜你喜欢
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多