【发布时间】:2016-02-29 23:55:48
【问题描述】:
我了解到我可以从 Simulink 模型/框图生成代码。我很好奇 Simulink 是否总是在运行 Simulink 软件中的仿真之前将模型转换为 (c/c++/java) 代码,然后执行该代码?我的意思是,每当我运行仿真时,Matlab 都会将框图转换为(c/c++/java)代码并在后台运行该代码。在这种情况下,Simulink 中的仿真直接依赖于运行一些代码;在某种程度上,这些信息对我很重要。
为完整模型生成和运行代码似乎是合理的,因为我们可以使用 C/Matlab 代码编写 s-functions 并将它们用作自定义块。因此,模拟模型在某种程度上涉及运行代码。同样,由于我们也可以编写 Matlab 代码,因此模拟可能涉及在某些环境中解释 Matlab 代码。这让我很好奇这些信息是否可用——在 Simulink 中运行模拟的紧密程度取决于在用户机器中执行本机代码。
我在发帖前做了一些搜索,发现了这个 SO 问题:How does simulation engine work? 这个问题中的讨论并没有直接回答我的问题。
【问题讨论】:
-
您关心模拟速度吗?
-
模拟基本上是一个巨大的数值积分问题。 S-Function 等仅在每个时间步计算等式左侧和右侧的一些条目。当您构建模型并使用 XPC Target 等内容时,它会转换为压缩代码。
-
@PagMax 不,我不关心速度。只是好奇在模拟过程中是否会生成原生代码并在后台运行。
-
问题完全回答了吗?