4

我读过在 Simulink 模型中使用 Matlab 函数会严重影响其性能。建议使用MATLAB Function模块而不是 Interpreted MATLAB Function 模块。

在将模型编译为 C 以在 xPC 目标机器上使用时,我不清楚这是如何应用的。我是否会因为 M 脚本而受到某种惩罚,还是最好使用普通的 Simulink 模块来解决相同的问题?

4

2 回答 2

3

不应该因为使用 MATLAB Function 模块而受到任何惩罚。编译模型时,MATLAB Function 模块会将其 MATLAB 代码编译成 C 语言,就像其他 Simulink 模块一样。

我会根据对问题建模的最佳方法进行选择。例如,如果您的算法需要太多控制流语句或循环,则在 MATLAB Function 模块中对其进行编码会更容易。你总是可以混合使用两者。

于 2013-03-06T16:34:02.887 回答
2

您提供的链接并没有真正说明或暗示“在 Simulink 模型中使用 Matlab 函数会严重影响其性能”。在某些情况下可以,但在许多情况下,它与内置块一样快。

Interpreted MATLAB Function 模块在每次需要评估时(即在每个时间步)回调到 MATLAB。这使得它变慢(相对于其他技术)并且还阻止它用于任何 c 代码生成目的(即 xPC 使用的 Simulink Coder)。

使用定义为 coder.extrinsic 的函数的 MATLAB Function 模块中的 m 代码受到与上述相同的限制并且可能很慢。

嵌入式 NATLAB 子集中的 MATLAB Function 模块中的 m 代码(即简单的数学和矩阵操作)被转换为 C 代码并编译(当使用仿真和用于 c 代码生成时)。在仿真和代码生成中,您应该会看到与使用标准模块类似的性能。

菲尔。

于 2013-03-06T17:51:53.263 回答