matlab - Simulink:Matlab 嵌入式函数代码错误

标签 matlab simulink

我在 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/

相关文章:

matlab - 训练网络出现 "Incorrectly defined MiniBatchable Datastore"错误如何解决

c++ - 如何用 C++ 拟合二维散点数据

matlab - 使用accumarray和@min从组中提取最小值,但也从另一个变量/列输出相应的值

matlab - 如何在不将输入放入工作区的情况下向 Simulink 模型提供输入

matlab - 从工作区到 Simulink 的异构数据

macos - 运行 gfortran 时巨大的 fort.# 文件

matlab - dlmwrite 循环使用

c - 除了将其复制到内存位置或将其定义为静态之外,是否有一种方法可以监视正在运行的实时软件上的局部变量?

matlab - 从文件加载 Simulink 查找表的数据

matlab - Simulink Scope 是否有在单列中显示布局的选项?