MATLAB / Simulink - 以编程方式提供多个外部输入

时间:2012-02-29 06:45:53

标签: matlab simulink

我有以下Simulink模型:

Observer/controller Simulink model

我想在外部提供输入u[k]y[k],即我将通过MATLAB命令行运行模拟。我found previously我可以设置[LoadExternalInput和ExternalInput] [3]选项,它们默认为向量[t u]

但我的u[k]y[k]是向量,看起来ExternalInput只能指定一个向量。因此,[t u]的每一行都是u时整个向量t的值。

我的模型中u[k]y[k]的大小不一定是提前知道的。有没有办法传递这些向量(可能是结构)?

1 个答案:

答案 0 :(得分:2)

Importing Data to Root-Level Input Ports我发现我可以做类似

的事情
sim('myModel', 'LoadExternalInput', 'on', 'ExternalInput', 'u, y');

其中uy是包含字段timesignals.valuessignals.dimensions的结构; signals.values的每一行是对应于time的n个元素的向量。 signals.dimensionssignals.values的维度。我必须手动设置In1端口以期望与u.signals.values相同的维度(好吧,我当然可以在编程之前以编程方式进行...):

  

注意您必须将Inport或Trigger块的端口尺寸参数设置为与相应输入结构的dimensions字段相同的值。如果值不同,则在尝试模拟模型时会显示错误消息。

(来自"Importing Data Structures to a Root-Level Input Port"

如果必须手动设置In1块上的维度,设置signals.dimensions的重点是什么?无论如何,我可能必须这样做:在运行模拟之前检查uy,然后设置Inblock属性(当然是以编程方式)来预期那个长度的向量。

我仍然希望有一个更优雅的解决方案。