我正在尝试运行 Simulink 模型,同时在 Matlab 脚本中接收和处理数据,并将结果发送到 Simulink 中以更改模型的行为。
由于 Matlab 脚本应该不断接收和处理数据,所以我能想到的唯一方法是使用 while(1) 循环。然而,模拟似乎被 while 循环阻止了。当我运行脚本时,模拟时间停止。我只要按Ctrl+C结束脚本,模拟就继续。
有没有什么方法可以同时运行simulink仿真和Matlab脚本(或函数),同时保持它们之间的交互?就像在不同的线程中执行它们一样。
最佳答案
MATLAB(+ 工具箱 + Simulink)本质上是一个单线程应用程序,因此没有简单的方法来完成您想要的操作。 (近年来,一些底层数学库已经成为多线程的,但这并没有改变高层的情况)。
您可以执行以下任一操作:
- 有 2 个 session 正在运行;一台运行 MATLAB,一台运行 Simulink,两者之间有适当的通信 channel
- 将 MATLAB 代码合并到 Simulink S-Function 中,并让它在每次 Simulink 采取时间步时执行其任务。
后者(可以说)是最简单的。
关于matlab - 如何同时运行simulink仿真和matlab脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17132847/