0

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

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

The function 'rms' not supported for standalone code generation

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

问题:

  • 有没有办法rms在 Simulink 中使用 Matlab?
  • Simulink 中是否还有许多其他本机 Matlab 调用无法使用?
4

2 回答 2

1

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

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

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

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

coder.extrinsic('rms');

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

有关将函数声明为外部函数的更多信息,请参阅此文档

于 2012-11-01T14:06:40.490 回答
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信号在哪里。

于 2012-10-31T23:52:43.917 回答