Simulink内的Matlab函数不支持RMS
Simulink有一个名为“Matlab函数”的模块,允许您在Simulink流程图中创建自定义函数 我在Simulink Matlab函数模块中实现了一个简单的函数。我的函数包含对Matlab内置的Simulink内的Matlab函数不支持RMS,matlab,code-generation,simulink,matlab-coder,Matlab,Code Generation,Simulink,Matlab Coder,Simulink有一个名为“Matlab函数”的模块,允许您在Simulink流程图中创建自定义函数 我在Simulink Matlab函数模块中实现了一个简单的函数。我的函数包含对Matlab内置的rms()的调用。当我运行Simulink模型时,我得到以下错误: The function 'rms' not supported for standalone code generation 如果我从Simulink模型中的Matlab函数中删除rms,错误就会消失,模型会完美地运行 问题:
rms()
的调用。当我运行Simulink模型时,我得到以下错误:
The function 'rms' not supported for standalone code generation
如果我从Simulink模型中的Matlab函数中删除rms
,错误就会消失,模型会完美地运行
问题:
- 有没有办法在Simulink中使用Matlab的
rms
- Simulink中还有许多其他本机Matlab调用无法使用吗?
错误的一部分告诉我,您正在尝试使用Matlab Coder之类的产品来生成可执行代码或本机代码。如果是这种情况,那么有许多简单的调用不能直接在核心Matlab和工具箱中使用。编码器产品仅支持该语言的一个子集。更多信息可以在这里找到
至于对rms
的调用,它只计算平方平均值的根。尝试创建一个替代使用类似
sqrt(平均值(x.^2))
…其中,
x
是信号。我只想澄清和扩展learnvst回答中的一些要点
即使您只是尝试模拟包含MATLAB功能块的模型,并且没有明确尝试执行代码生成,您仍然会得到独立代码生成不支持的错误
正如learnvst所指出的,对可用于代码生成的函数有多种限制。但是,如果您只想模拟您的模型,Simulink允许您在将这些“黑名单”函数表示为外部函数时进行模拟。这让Simulink知道这些函数将仅用于模拟目的,而不是代码生成的一部分
在特定情况下,在调用rms
之前的某个位置添加以下代码行:
coder.extrinsic('rms');
即使在执行代码生成时,在MATLAB函数中将函数声明为外部函数通常也是有用的。例如,您可能希望在模拟期间使用plot
命令可视化数据,但显然不需要将plot
命令作为生成代码的一部分
有关将函数声明为外部函数的更多信息,请参阅。谢谢!我还没来得及尝试一下,但如果我在coder.extrinsic
方面遇到任何困难,我会继续跟进。