如何在Simulink中绘制Y数组相对于X的图形?

4
我希望能够在Simulink中构建一些坦克模型,并在模拟过程中进行可视化。在Matlab中,我通常会输入以下命令:
plot(dX, Y), grid;

这里有两个包含20个元素的数组dXY(例如)。在Simulink中有没有类似的范围或工具可以绘制它们?因为X-Y图仅支持标量 :(

1个回答

8
如果我理解您的问题正确,您的Simulink模型具有信号dX和Y,每个信号都具有20x1的维度。因此,这些信号本身是向量,其值会随时间变化而改变。如果是这种情况,那么在模拟运行时,您将期望将其可视化为一种动画。也就是说,在Simulink模拟的每个时间步骤中,您将生成一个X-Y图形,说明向量dX和Y之间的关系。
据我所知,Scope和X-Y Graph块不支持此用例。如果您的信号是随时间变化的标量值,则X-Y Graph是最好的选择。但正如您所说,由于您正在使用随时间变化的向量,因此X-Y Graph并不是很有用。
因此,这可能是一个非常快速和简单的解决方案,但您可能希望考虑只是利用MATLAB函数块,并从其中调用plot函数。例如,该块的内容可能如下所示:
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送入其中。


是的,这就是我想要的——一种动画(实时模拟)。你的解决方案可行。谢谢! - remus
然而,模拟速度变得非常缓慢 :( - remus
2
如果您正在使用连续或快速离散采样时间,您可能希望以较慢的离散采样时间运行MATLAB函数块,以便动画每秒更新一次,并且不会过多地减慢模拟。您将需要使用适当的速率转换块从连续/快速离散采样时间转换到/从较慢的离散采样时间。 - am304
是的,不幸的是,像我建议的这种快速而肮脏的解决方案通常会导致性能缓慢和不稳定。不过,我认为am304提供了一个很好的可能改进的方案。 - grungetta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接