You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Python控制Simulink仿真并打开运行已有模型?

Python通过MATLAB Engine控制Simulink仿真解决方案

正确调用逻辑

你提供的代码直接调用eng.sim()未生效,通常是因为没有提前加载模型、也没有将模型路径加入MATLAB的搜索路径导致的,完整的调用流程如下:

  1. 启动MATLAB引擎
  2. 将模型所在文件夹加入MATLAB搜索路径
  3. 加载(打开)Simulink模型
  4. 运行仿真

完整示例代码:

import matlab.engine

# 启动MATLAB引擎
eng = matlab.engine.start_matlab()

# 若模型不在Python脚本同目录,需要添加模型所在文件夹到MATLAB搜索路径
# Windows路径示例:eng.addpath(r"C:\Users\你的用户名\Documents\simulink_project")
# macOS/Linux路径示例:eng.addpath(r"/home/你的用户名/simulink_project")
eng.addpath(r"替换为你的模型文件夹绝对路径", nargout=0)

model_name = "mysimulinkmodelname"
# 打开Simulink模型,nargout=0表示该函数无返回值,必须加否则会报错
eng.open_system(model_name, nargout=0)

# 运行仿真,可获取仿真结果对象
sim_result = eng.sim(model_name)

# 仿真结束后可按需关闭模型,第二个参数0表示不保存修改
# eng.close_system(model_name, 0, nargout=0)

模型文件路径要求

  • 优先将.slx格式的Simulink模型文件和当前运行的Python脚本放在同一文件夹下,此时可以省略eng.addpath()步骤,MATLAB引擎默认会将Python脚本的运行目录加入搜索路径。
  • 如果模型存放在其他目录,必须通过eng.addpath()传入模型所在文件夹的绝对路径,避免相对路径引发的找不到文件问题。
  • 模型文件名禁止包含中文、空格、特殊字符,避免MATLAB识别异常。

常见注意事项

  • 所有没有返回值的MATLAB函数,在Python中调用时都需要加nargout=0参数,否则会抛出返回值数量不匹配的错误。
  • 若调用sim时模型未提前通过open_system加载,部分复杂模型会因为依赖未加载报错,建议统一先调用open_system再运行仿真。

内容的提问来源于stack exchange,提问作者Indhu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 15:45:06