【问题标题】:Should I use a MATLAB Function block or normal Simulink blocks?我应该使用 MATLAB Function 模块还是普通的 Simulink 模块?
【发布时间】:2013-03-06 01:48:04
【问题描述】:

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

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

【问题讨论】:

    标签: matlab simulink xpc-target


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      菲尔。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-10-02
        • 2019-04-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多