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 回答
我只是想澄清并扩展在learnvst的答案中提出的一些观点 .
即使您只是尝试模拟包含MATLAB功能块的模型并且没有明确尝试执行代码生成,您仍然会收到
not supported for standalone code generation
错误 .正如learnvst所指出的,对可以与代码生成一起使用的函数有多种限制 . 但是,如果您只想模拟模型,如果您将这些"black-listed"函数表示为 extrinsic ,则Simulink允许您执行此操作 . 这让Simulink知道这些函数仅用于模拟目的,不会成为代码生成的一部分 .
在您的特定情况下,在调用
rms
之前在某处添加以下代码行:即使在执行代码生成时,在MATLAB函数中将函数声明为外在函数通常也很有用 . 例如,您可能希望在模拟期间使用
plot
命令可视化数据,但显然不需要plot
命令作为生成代码的一部分 .有关声明函数为外在的更多信息,请参阅this doc .
错误的一部分告诉我你正在尝试使用像Matlab Coder这样的产品来制作可执行文件或本机代码 . 如果是这种情况,有许多天真的调用无法在核心Matlab和工具箱中直接使用 . 编码器产品仅支持该语言的子集 . 更多信息可以在这里找到 . . .
http://www.mathworks.co.uk/products/matlab-coder/description2.html
至于你对
rms
的调用,它只是计算平方均值的根 . 尝试使用类似的方法创建替代方案 . . .sqrt(mean(x.^2))
...
x
是信号 .