我在 simulink 的嵌入式 matlab 函数中有以下代码:
function rad = fcn(lenkwinkel)
if lenkwinkel < 0
rad=[0 1 0 0];
elseif lenkwinkel > 0
rad=[1 0 0 0];
else
rad=[0 0 0 0];
end
在仿真中,我将“lenkwinkel”变量连接到 MATLAB 函数 block ,该函数 block 连接到具有 4 个端口的 Mux block 。
我正在尝试使用该函数将具有 4 个二进制元素的向量发送到 Mux block ,然后该 block 应将其拆分为 4 个信号。不幸的是,这不起作用。当我尝试运行它时,我得到:
Inferred size ('[1 4]') for data 'rad' (#44) does not match back propagated size ('[4]') from Simulink.
有人可以帮我解决这个问题吗?非常感谢。
最佳答案
我假设您也指的是 DeMux,如果不正确,请纠正我们。从表面上看,MATLAB Function 模块已确定 rad 的大小为 1×4,因为这是分配给它的值的大小。然而,其他东西似乎认为输出的大小应该是 [4]
或 4-by-1
。您是否手动指定 MATLAB Function 模块的输出大小为 [4]
或解复用器的大小以期望输入大小为 [4]
?
您可以将 rad
的定义更改为 4×1,或者将指定给 Simulink 的大小更改为 [1, 4]
。
关于matlab - Simulink:Matlab 嵌入式函数代码错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22914823/