【问题标题】:RMS not supported in Matlab function inside SimulinkSimulink 中的 Matlab 函数不支持 RMS
【发布时间】:2012-10-21 12:36:12
【问题描述】:

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

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

The function 'rms' not supported for standalone code generation

如果我在 Simulink 模型中从我的 Matlab 函数中删除 rms,错误就会消失并且模型可以完美运行。

问题:

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

【问题讨论】:

    标签: matlab code-generation simulink matlab-coder


    【解决方案1】:

    我只是想澄清和扩展 learnvst 的回答中提出的一些观点。

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

    正如 learnvst 所指出的,对可用于代码生成的函数有多种限制。但是,如果您只是想模拟您的模型,如果您将这些“黑名单”函数表示为 外部,Simulink 允许您执行此操作。这让 Simulink 知道这些函数将仅用于仿真目的,不会成为代码生成的一部分。

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

    coder.extrinsic('rms');
    

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

    请参阅this doc,了解有关将函数声明为外部函数的更多信息。

    【讨论】:

    • 谢谢!我还没有开始尝试这个,但如果我对coder.extrinsic 有任何困难,我会跟进。
    【解决方案2】:

    错误的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 是信号。

    【讨论】:

      猜你喜欢
      • 2013-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多