简单 Matlab/Simulink 模型,添加 2 个信号

Simple Matlab/Simulink Model, adding 2 signals

我创建了一个简单的 Simulink 模型,其中添加了两个信号:

控制该模型的代码如下:

clear X Y Result

data=ones(1,5);
X=timeseries(data);
Y=timeseries(data);

output = sim('model_test','StopTime',stop_time);
Result = output.get('Res');

显然,我希望得到如下结果,一个包含[2 2 2 2 2]的矩阵。 然而,我的结果是这样的:

结果是 1x1x27 双倍,而不是所希望的 1x5 双倍。 你知道我要改变什么吗?我的代码是错误的还是我必须更改 simulink 模型中的设置?提前致谢!

问题在于您构建输入数据的方式。

您用于 timeseries 的语法构造 XY 使得它们的标量值 2 在时间上等于 0、1、2、3 和 4秒。您可以通过查看 X.TimeX.Data.

来了解这一点

根据您的预期,您似乎希望将它们定义为每个时间步长的 5 个元素向量。这将涉及使用

>> X = timeseries(ones(1,5),0);

或类似的东西,具体取决于您要定义多少个时间点。上面只定义了 time = 0 秒的数据。再次查看 MATLAB 工作区中的变量以确认这一点。 (当然,如果您打算在每个时间步都有相同的值,那么您应该只使用 Constant 块而不是 From Workspace 块。)

输出(与输入一样)显示为三维矩阵,因为第三维是时间。对于您的模型采用的每个仿真时间步长,您都会有一个信号值。在你的模型中它是一个标量,但通常它 will/can 是任何二维矩阵。您得到 1x1x27 结果是因为您的信号是标量(1x1 位)并且采用了 27 个时间步长(x27 位)。