首页 文章

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

提问于
浏览
2

我有以下Simulink模型:

Observer/controller Simulink model

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

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

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

1 回答

  • 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块的Port dimension参数设置为与相应输入结构的dimension字段相同的值 . 如果值不同,则在尝试模拟模型时会显示错误消息 .

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

    如果我必须手动设置In1块上的尺寸,那么设置 signals.dimensions 有什么意义呢?无论如何,可能必须如何做到这一点:在运行模拟之前检查 uy ,然后设置Inblock属性(当然是以编程方式)以期望该长度的向量 .

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

相关问题