具有 if/else 和不同信号维度的 Simulink
Simulink with if/else and different signal dimension
我需要在 simulink 中实现 if/else 以确定输入是标量值还是矩阵。请看下图:
鉴于:
Block(1) - 是一个输入,可以是标量“1”或矩阵“[[0 15];[5 10]]”
Block(2) - 必须 return 输入的信号维度。例如:1 表示标量,>1 表示矩阵
要求是:
- 一切都必须解释或编译(Simulink 编码器)
- 块 (4) 和 (5) 的最终输出是标量
- 我对 CMexSFunctions 的了解一般。所以如果我需要实施一个来解决问题就可以了
到目前为止,我遇到了以下问题:
- 如果我计划做的事情可行,我完全不会
- 我不知道如何实现 Block(2) 在编译模式下工作
- 即使存在 if/else,simulink 在 运行 验证所有信号维度是否正常之前执行预检查。在此检查期间,它给出了一条错误消息:ex: Block(5) 的输入为 matrix
有什么线索吗?
Block(2) 是最简单的部分,可以使用 Simulink 库中的 "Probe" 块来实现。您在端口 1 的输入必须是可变大小的信号,因为您需要一个标量或矩阵。
我假设您正在将 Input(1) 馈送到块 4 和 5。在模型编译时,Simulink 无法根据输入大小 运行 知道这些块中的哪一个。因此 Simulink 需要假设两个模块都可能获得标量或矩阵。您需要使块 4 和块 5 不会对标量和矩阵都抛出错误,即使它们在 运行 时仅用于一种类型。
如果您无法做到这一点,对于标量情况,一个简单的变通方法是在始终选择第一个样本的块 5 之前放置一个选择器。这将使 Simulink 知道块 5 的输入始终是标量。
我需要在 simulink 中实现 if/else 以确定输入是标量值还是矩阵。请看下图:
鉴于:
Block(1) - 是一个输入,可以是标量“1”或矩阵“[[0 15];[5 10]]”
Block(2) - 必须 return 输入的信号维度。例如:1 表示标量,>1 表示矩阵
要求是:
- 一切都必须解释或编译(Simulink 编码器)
- 块 (4) 和 (5) 的最终输出是标量
- 我对 CMexSFunctions 的了解一般。所以如果我需要实施一个来解决问题就可以了
到目前为止,我遇到了以下问题:
- 如果我计划做的事情可行,我完全不会
- 我不知道如何实现 Block(2) 在编译模式下工作
- 即使存在 if/else,simulink 在 运行 验证所有信号维度是否正常之前执行预检查。在此检查期间,它给出了一条错误消息:ex: Block(5) 的输入为 matrix
有什么线索吗?
Block(2) 是最简单的部分,可以使用 Simulink 库中的 "Probe" 块来实现。您在端口 1 的输入必须是可变大小的信号,因为您需要一个标量或矩阵。
我假设您正在将 Input(1) 馈送到块 4 和 5。在模型编译时,Simulink 无法根据输入大小 运行 知道这些块中的哪一个。因此 Simulink 需要假设两个模块都可能获得标量或矩阵。您需要使块 4 和块 5 不会对标量和矩阵都抛出错误,即使它们在 运行 时仅用于一种类型。
如果您无法做到这一点,对于标量情况,一个简单的变通方法是在始终选择第一个样本的块 5 之前放置一个选择器。这将使 Simulink 知道块 5 的输入始终是标量。