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

简单的Matlab/Simulink模型,添加2个信号,matlab,simulink,Matlab,Simulink,我创建了一个简单的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]的矩阵。 但是,我的结果如下所示: 结果是1x1x27双精度,

我创建了一个简单的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]的矩阵。 但是,我的结果如下所示:

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

问题在于如何构造输入数据

用于
timeseries
的语法构造
X
Y
,使它们在时间上的标量值为2,分别等于0,1,2,3和4秒。通过查看
X.Time
X.Data
可以看到这一点

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

>> X = timeseries(ones(1,5),0);
或者类似的东西,这取决于要定义的时间点的数量。以上仅在时间=0秒时定义数据。再次查看MATLAB工作区中的变量以确认这一点。(当然,如果您希望在每个时间步都具有相同的值,那么您应该只使用常量块,而不是“来自工作区”块。)


输出(与输入一样)显示为3D矩阵,因为第三维是时间。对于模型采用的每个模拟时间步,都将有一个信号值。在您的模型中,它是一个标量,但通常可以是任何二维矩阵。由于信号是标量(1x1位)且采用了27个时间步长(x27位),因此会得到1x12x27结果。

问题在于如何构造输入数据

用于
timeseries
的语法构造
X
Y
,使它们在时间上的标量值为2,分别等于0,1,2,3和4秒。通过查看
X.Time
X.Data
可以看到这一点

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

>> X = timeseries(ones(1,5),0);
或者类似的东西,这取决于要定义的时间点的数量。以上仅在时间=0秒时定义数据。再次查看MATLAB工作区中的变量以确认这一点。(当然,如果您希望在每个时间步都具有相同的值,那么您应该只使用常量块,而不是“来自工作区”块。)


输出(与输入一样)显示为3D矩阵,因为第三维是时间。对于模型采用的每个模拟时间步,都将有一个信号值。在您的模型中,它是一个标量,但通常可以是任何二维矩阵。由于信号是标量信号(1x1位),并且采用了27个时间步长(x27位),因此得到了1x12x27的结果。

让我来试试看+1.打败我+1.