首页 文章

Simulink中的Matlab函数不支持RMS

提问于
浏览
0

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

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

The function 'rms' not supported for standalone code generation

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

Questions:

  • Is there a way to use Matlab's rms in Simulink?

  • Are there many other native Matlab calls that can't be used inside Simulink?

2 回答

  • 1

    我只是想澄清并扩展在learnvst的答案中提出的一些观点 .

    即使您只是尝试模拟包含MATLAB功能块的模型并且没有明确尝试执行代码生成,您仍然会收到 not supported for standalone code generation 错误 .

    正如learnvst所指出的,对可以与代码生成一起使用的函数有多种限制 . 但是,如果您只想模拟模型,如果您将这些"black-listed"函数表示为 extrinsic ,则Simulink允许您执行此操作 . 这让Simulink知道这些函数仅用于模拟目的,不会成为代码生成的一部分 .

    在您的特定情况下,在调用 rms 之前在某处添加以下代码行:

    coder.extrinsic('rms');
    

    即使在执行代码生成时,在MATLAB函数中将函数声明为外在函数通常也很有用 . 例如,您可能希望在模拟期间使用 plot 命令可视化数据,但显然不需要 plot 命令作为生成代码的一部分 .

    有关声明函数为外在的更多信息,请参阅this doc .

  • 0

    错误的一部分告诉我你正在尝试使用像Matlab Coder这样的产品来制作可执行文件或本机代码 . 如果是这种情况,有许多天真的调用无法在核心Matlab和工具箱中直接使用 . 编码器产品仅支持该语言的子集 . 更多信息可以在这里找到 . . .

    http://www.mathworks.co.uk/products/matlab-coder/description2.html

    至于你对 rms 的调用,它只是计算平方均值的根 . 尝试使用类似的方法创建替代方案 . . .

    sqrt(mean(x.^2))

    ... x 是信号 .

相关问题