Simulink中的Matlab函数不支持RMS

时间:2012-10-31 22:27:11

标签: matlab code-generation simulink matlab-coder

Simulink有一个名为“Matlab Function”的模块,它允许您在Simulink流程图中创建自定义函数。

我在Simulink Matlab函数模块中实现了一个简单的函数。我的函数包含对Matlab内置rms()的调用。当我运行Simulink模型时,我收到以下错误:

The function 'rms' not supported for standalone code generation

如果我从Simulink模型中的Matlab函数中删除rms,则错误消失,模型运行完美。

问题:

  • 有没有办法在Simulink中使用Matlab的rms
  • 还有许多其他原生Matlab调用无法在Simulink中使用吗?

2 个答案:

答案 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是信号。