Simulink在模拟之前是否将模型/程序框图转换为代码?

时间:2016-02-29 23:55:49

标签: matlab simulink

我读过我可以从Simulink模型/程序框图生成代码。我很好奇Simulink是否总是在Simulink软件中运行模拟之前将模型转换为(c / c ++ / java)代码,然后执行该代码?我的意思是,每当我运行模拟时,Matlab都会将程序框图转换为(c / c ++ / java)代码并在场景后面运行该代码。在这种情况下,Simulink中的仿真直接依赖于运行一些代码;这些信息对我来说很重要。

生成并运行完整模型的代码似乎是合理的,因为我们可以使用C / Matlab代码编写s-functions并将它们用作自定义块。因此,模拟模型涉及在某种程度上运行代码。同样,由于我们也可以编写Matlab代码,因此仿真可能涉及在某些环境中解释Matlab代码。这让我很好奇这些信息是否可用 - 在Simulink中运行模拟的紧密程度取决于在用户机器中执行本机代码。

我在发布之前做了一些搜索,发现了这个问题:How does simulation engine work?这个问题的讨论没有直接回答我的问题。

1 个答案:

答案 0 :(得分:4)

答案取决于您选择的模式。

正常模式下 Simulink将运行模型,因为它主要使用MATLAB执行引擎。没有生成代码。本机实现的部分(例如S函数)用作MATLAB解释器调用的单独二进制文件。

加速器模式中,Simulink生成模型代码。这意味着您的完整模型(除了无法生成代码的部分)生成并编译为一个二进制文件。

快速加速模式中,不仅会生成模型,还会生成求解器并将其编译为一个二进制文件,现在在单独的过程中运行。

有关详细信息,请参阅official documentation