Simulink有一个名为“Matlab Function”的模块,它允许您在Simulink流程图中创建自定义函数。
我在Simulink Matlab函数模块中实现了一个简单的函数。我的函数包含对Matlab内置rms()
的调用。当我运行Simulink模型时,我收到以下错误:
The function 'rms' not supported for standalone code generation
如果我从Simulink模型中的Matlab函数中删除rms
,则错误消失,模型运行完美。
问题:
rms
? 答案 0 :(得分:1)
我只想澄清并扩展 learnvst 答案中的一些观点。
即使您只是试图模拟包含MATLAB功能块的模型并且没有明确尝试执行代码生成,您仍然会收到not supported for standalone code generation
错误。
如 learnvst 所示,对可用于代码生成的函数有多种限制。但是,如果您只是想模拟您的模型,如果您将这些“黑名单”功能表示为外在,则Simulink允许您执行此操作。这让Simulink知道这些函数仅用于模拟目的,不会成为代码生成的一部分。
在您的特定情况下,在致电rms
之前在某处添加以下代码行:
coder.extrinsic('rms');
即使在执行代码生成时,在MATLAB函数中将函数声明为外在函数通常也很有用。例如,您可能希望在模拟期间使用plot
命令可视化数据,但显然不需要plot
命令作为生成代码的一部分。
有关声明函数是外在的更多信息,请参阅this doc。
答案 1 :(得分:0)
错误的not supported for standalone code generation
部分向我建议您尝试使用Matlab Coder之类的产品来制作可执行文件或本机代码。如果是这种情况,有许多天真的调用无法在核心Matlab和工具箱中直接使用。编码器产品仅支持该语言的子集。更多信息可以在这里找到 。 。
http://www.mathworks.co.uk/products/matlab-coder/description2.html
至于你对rms
的号召,它只是计算平方均值的根。尝试使用类似的方法创建替代方案。 。 。
sqrt(mean(x.^2))
...其中x
是信号。