我有以下Simulink模型:
我想在外部提供输入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]
的大小不一定是提前知道的。有没有办法传递这些向量(可能是结构)?
答案 0 :(得分:2)
从Importing Data to Root-Level Input Ports我发现我可以做类似
的事情sim('myModel', 'LoadExternalInput', 'on', 'ExternalInput', 'u, y');
其中u
和y
是包含字段time
,signals.values
和signals.dimensions
的结构; signals.values
的每一行是对应于time
的n个元素的向量。 signals.dimensions
是signals.values
的维度。我必须手动设置In1端口以期望与u.signals.values
相同的维度(好吧,我当然可以在编程之前以编程方式进行...):
注意您必须将Inport或Trigger块的端口尺寸参数设置为与相应输入结构的
dimensions
字段相同的值。如果值不同,则在尝试模拟模型时会显示错误消息。
(来自"Importing Data Structures to a Root-Level Input Port")
如果必须手动设置In1块上的维度,设置signals.dimensions
的重点是什么?无论如何,我可能必须这样做:在运行模拟之前检查u
和y
,然后设置Inblock属性(当然是以编程方式)来预期那个长度的向量。
我仍然希望有一个更优雅的解决方案。