我在将值从 GUI 发送到 Simulink 模型中的嵌入式 MATLAB 函数 (EMF) 时遇到问题。我从 GUI 中的滑块获取该值,并将其发送到模型中的 EMF 块。我可以确认该值已从 GUI 正确传输到 Simulink 模块,因为我可以在模型中使用显示模块显示该值,并在更改 GUI 中的滑块位置时查看值的变化。但是,当我运行模型时,我不断收到此错误:
Could not determine the size of this expression.
Function 'Kastl' (#18.282.283), line 14, column 1:
"f"
这是我的 EMF 块代码的一部分:
function y = input_par(u,fstart)
...
f_end = 1000;
f = fstart:f_end;
...
我相信MikeT是正确的:您不能重新定义嵌入函数中变量的大小。如果你看这个嵌入式 MATLAB 函数文档页面在该小节下定义局部变量, 它说:
一旦定义了变量,就不能
将其重新定义为任何其他类型或大小
在函数体中。
您将必须重新设计您的嵌入式函数,以便您声明的变量不会改变大小。因为我不知道您随后要使用该变量做什么f
,没有更多了specific我可以给你帮助。
一般来说,如果您绝对需要要使用改变大小的数据,一种解决方案是用“垃圾”值填充数据以保持恒定的大小。例如:
MAX_ELEMS = 1000; % Define the maximum number of elements in the vector
f = [fstart:MAX_ELEMS nan(1,fstart-1)]; % Create vector and pad with NaNs
在上面的例子中,变量f
将始终有 1000 个元素(假设值为fstart
是小于或等于 1000 的整数值)。价值NaN
用于将向量填充到适当的常量大小。任何后续代码都必须能够识别该值NaN
应该被忽略。根据嵌入函数中随后进行的计算,可能需要不同的 pad 值来代替NaN
(如0、负值等)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)