2

我正在尝试运行 Simulink 模型,同时在 Matlab 脚本中接收和处理数据,并将结果发送到 Simulink 以更改模型的行为。

由于 Matlab 脚本应该继续接收和处理数据,我能弄清楚的唯一方法是使用 while(1) 循环。但是,模拟似乎被 while 循环阻塞了。当我运行脚本时,模拟时间停止。只要我 Ctrl+C 结束脚本,模拟就继续。

有什么方法可以同时运行 simulink 仿真和 Matlab 脚本(或函数),同时保持它们之间的交互?就像在不同的线程中执行它们一样。

4

1 回答 1

2

MATLAB(+ 工具箱 + Simulink)本质上是一个单线程应用程序,所以没有简单的方法可以做你想做的事。(近年来,一些底层数学库已经变成了多线程的,但这并没有改变高层次的图景)。

您可以执行以下任一操作:

  • 有 2 个会话正在运行;一台运行 MATLAB 和一台 Simulink,两者之间有适当的通信通道
  • 将您的 MATLAB 代码合并到 Simulink S-Function 中,并让它在 Simulink 每次采取时间步长时执行其工作。

其中后者(可以说)是最简单的。

于 2013-06-16T15:34:32.003 回答