我有类似于Simulink上的以下框图,它看起来相当混乱,尤其是越来越多的块。
我想用功能块替换3点求和块,同时保持相同的输出。
首先,我开始将代码放在功能块中:
function y = fcn(u)
sys1 = tf(0.5,[1 0 0 4]);
sys2 = tf([3 0.5],[1 0 15]);
sys3 = tf(1,[1 1]);
y = sys1 + sys2 + sys3;
但是我遇到了一个错误,称Simulink不支持代码生成。
"' tf' class不支持代码生成。"
然后我在这里遇到了类似的问题:https://nl.mathworks.com/matlabcentral/answers/74770-is-there-any-way-to-disable-code-generation-in-simulink
我正在尝试实现外在函数或“包装函数”。有些困难。我创建了一个名为myWrapper.m的新脚本,其中包含相同的代码:
function y = myWrapper(u)
sys1 = tf(0.5,[1 0 0 0 4]);
sys2 = tf([3 5],[1 0 15]);
sys3 = tf(1,[1 1]);
y = sys1 + sys2 + sys3;
并将MATLAB函数编辑为:
function y1 = fcn(u1)
y1 = myWrapper(u1);
错误仍然存在。
我想以某种方式从MATLAB功能块访问myWrapper.m
文件。有关如何做到这一点的任何指示?按照上面给出的链接和official docs我在MATLAB功能块中得到类似的结果:
function y1 = fcn(u1)coder.extrinsic('myWrapper')
y1 = myWrapper(u1);
上面的最后一个代码在语法上是不正确的,我对它应该如何完成感到茫然。 MATLAB自动将上述代码更正为:
function y1 = fcn(u1,coder,extrinsic, myWrapper )
y1 = myWrapper(u1);
这不是我想要的。
有关如何做到这一点的任何提示和/或建议将不胜感激。
两年前在MathWorks论坛here上提出了一个类似的问题,没有回复。