我有类似于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'类不支持代码生成 . ”
我试图用一些困难实现外在函数或'包装函数' . 我创建了一个名为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上提出了类似的问题,没有回复 .