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

Matlab Simulink是否在模拟之前将模型/框图转换为代码?,matlab,simulink,Matlab,Simulink,我读过,我可以从Simulink模型/框图生成代码。我很好奇Simulink是否总是在Simulink软件中运行模拟之前将模型转换为(c/c++/java)代码,然后执行该代码?我的意思是,每当我运行模拟时,Matlab都会将框图转换为(c/c++/java)代码,并在幕后运行这些代码。在这种情况下,Simulink中的仿真直接依赖于运行某些代码;这些信息在某种程度上对我很重要 生成和运行完整模型的代码似乎是合理的,因为我们可以使用C/Matlab代码编写s函数,并将其用作自定义块。因此,模拟模

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

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


在发布之前,我做了一些搜索,发现了这样一个问题:此问题中的讨论不会直接回答我的问题。

答案取决于您选择的模式

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

在加速器模式下,Simulink生成模型代码。这意味着您的完整模型(不可能生成代码的部分除外)将生成并编译为一个二进制文件

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


有关更多详细信息,请参阅

您是否关心模拟速度?模拟基本上是一个巨大的数值积分问题。S-函数等仅在每个时间步计算等式左侧和右侧的一些条目。当您构建模型并使用XPC Target等工具时,它会转换为压缩代码@PagMax No我不关心速度。只是想知道在模拟过程中是否会生成本机代码并在幕后运行。问题完全回答了?谢谢Daniel。我有几个次要问题:(1)非S功能块是如何实现的?如果它们是使用本机C代码实现的,那么Matlab是否将它们作为二进制文件执行?(2) 那么使用Matlab代码编写的模块呢?Matlab代码是否经过解释或编译,然后运行?还是Matlab代码被翻译成C代码然后运行?(3) 对于具有C代码的s函数块,我们如何在运行模拟时更改编译器参数(例如,-O,-std标志等)?@Shafiul:(1)有些内置块肯定不是s函数。这些是例如子系统、mux、demux,可能是大多数信号属性块和一些其他块。当读取生成的代码时,它们看起来完全不同。Simulink是封闭源代码,您可能无法得到详细的答案。(2) 这就是MATLAB函数和解释的MATLAB函数之间的区别。(3) 不知道。