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

时间:2015-05-31 23:11:38

标签: matlab simulink

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

控制此模型的代码如下:

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]的矩阵。 但是,我的结果如下所示: Simulink Result

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

1 个答案:

答案 0 :(得分:4)

问题在于如何构建输入数据。

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

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

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

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

输出(与输入一样)显示为3D矩阵,因为第三个维度是时间。对于模型所采用的每个模拟时间步长,您将获得一个信号值。在你的模型中它是一个标量,但一般来说它将/可以是任何二维矩阵。得到1x1x27的结果是因为你的信号是标量(1x1位)和27个时间步长(x27位)。