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

如何将Dymola仿真结果导入Python?含.mat读取及SDF导出疑问

Dymola仿真结果导出与Python读取问题解决

一、Dymola支持导出SDF格式

Dymola完全支持将仿真结果导出为SDF(Simulation Data Format,Modelica标准仿真数据格式),有两种操作方式:

  • 仿真后导出:打开仿真结果窗口,点击File -> Save As,在保存类型中选择SDF (*.sdf)即可。
  • 预配置输出格式:在仿真设置(Simulation Setup)的Output选项卡中,将“Result file format”设置为SDF,仿真完成后会自动生成SDF文件。

Python中读取SDF文件可以使用Dymola官方Python接口的readTrajectory函数,相比.mat格式,SDF的结构更贴合Modelica仿真数据,读取更稳定。

二、修复Python读取Dymola .mat文件的问题

你用scipy.io.loadmat读取效果不佳,是因为Dymola生成的.mat文件结构和标准Matlab.mat有差异,变量存储在特定数组中,以下是两种解决方法:

方法1:使用Dymola官方Python接口读取(推荐)

直接通过Dymola的Python接口读取结果,无需手动解析.mat结构,兼容性最好:

from dymola.dymola_interface import DymolaInterface
import matplotlib.pyplot as plt

# 初始化Dymola接口
dymola = DymolaInterface()

# 指定结果文件路径
result_path = r'C:\Users\Benutzername\Desktop\Python Interface for Dymola_test\HeatPumpCycle_CO2_0.30.mat'

# 定义需要读取的变量(替换为你需要的变量名)
target_vars = ['time', 'HeatPumpCycle.T_evap', 'HeatPumpCycle.Q_dot_cond']

# 读取变量数据
trajectory_data = dymola.readTrajectory(result_path, target_vars)

# 提取数据并绘图
time = trajectory_data[0]
t_evap = trajectory_data[1]

plt.plot(time, t_evap)
plt.xlabel('时间 [s]')
plt.ylabel('蒸发器温度 [K]')
plt.title('蒸发器温度随时间变化')
plt.show()

# 关闭接口
dymola.close()

方法2:调整scipy读取逻辑适配Dymola .mat结构

如果坚持用scipy,需要解析Dymola.mat的特定结构(变量名存于names数组,数据存于data数组):

import scipy.io
import matplotlib.pyplot as plt

dateipfad = r'C:\Users\Benutzername\Desktop\Python Interface for Dymola_test\HeatPumpCycle_CO2_0.30.mat'
mat_contents = scipy.io.loadmat(dateipfad)

# 提取变量名(处理嵌套数组格式)
var_names = [name[0][0] for name in mat_contents['names']]
# 提取数据数组(每一行对应一个变量的时间序列)
data_array = mat_contents['data']

# 获取目标变量的索引
time_idx = var_names.index('time')
target_var_idx = var_names.index('HeatPumpCycle.T_evap')  # 替换为你的变量名

# 提取数据
time = data_array[time_idx, :]
target_data = data_array[target_var_idx, :]

# 绘图
plt.plot(time, target_data)
plt.xlabel('时间 [s]')
plt.ylabel('目标变量值')
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 11:42:55