我读过我可以从Simulink模型/程序框图生成代码。我很好奇Simulink是否总是在Simulink软件中运行模拟之前将模型转换为(c / c ++ / java)代码,然后执行该代码?我的意思是,每当我运行模拟时,Matlab都会将程序框图转换为(c / c ++ / java)代码并在场景后面运行该代码。在这种情况下,Simulink中的仿真直接依赖于运行一些代码;这些信息对我来说很重要。
生成并运行完整模型的代码似乎是合理的,因为我们可以使用C / Matlab代码编写s-functions
并将它们用作自定义块。因此,模拟模型涉及在某种程度上运行代码。同样,由于我们也可以编写Matlab代码,因此仿真可能涉及在某些环境中解释Matlab代码。这让我很好奇这些信息是否可用 - 在Simulink中运行模拟的紧密程度取决于在用户机器中执行本机代码。
我在发布之前做了一些搜索,发现了这个问题:How does simulation engine work?这个问题的讨论没有直接回答我的问题。
答案 0 :(得分:4)
答案取决于您选择的模式。
在正常模式下 Simulink将运行模型,因为它主要使用MATLAB执行引擎。没有生成代码。本机实现的部分(例如S函数)用作MATLAB解释器调用的单独二进制文件。
在加速器模式中,Simulink生成模型代码。这意味着您的完整模型(除了无法生成代码的部分)生成并编译为一个二进制文件。
在快速加速模式中,不仅会生成模型,还会生成求解器并将其编译为一个二进制文件,现在在单独的过程中运行。
有关详细信息,请参阅official documentation