如何将 Dymola 仿真结果加载到 Python 中?

问题描述 投票:0回答:1

我想将 Dymola 模拟的结果读入 python 中以绘制一些变量。模拟后,我将数据作为 Matlab .mat 文件 我可以选择将结果导出为 SDF 格式吗?

我第一次尝试将数据读入 python 并没有很好地工作。

import scipy.io

# Pfad zur MAT-Datei definieren
dateipfad = r'C:\Users\Benutzername\Desktop\Python Interface for Dymola_test\HeatPumpCycle_CO2_0.30.mat'

# MAT-Datei einlesen
mat_contents = scipy.io.loadmat(dateipfad)

# Namen und Werte aller Variablen in der MAT-Datei ausgeben
for variable_name in mat_contents.keys():
    variable_value = mat_contents[variable_name]
    print(f"Variable '{variable_name}':")
    print(variable_value)
    print()
python modelica mat dymola
1个回答
0
投票

您的

.mat
文件的问题是,Dymola 使用非常特定的格式来存储其数据以减小文件大小。在典型的 Modelica 模型中,您有很多别名变量,例如由于连接多个在连接点具有相同电位的组件而引起。为了减小文件大小,势的时间序列仅存储一次,并且多个变量链接到它。因此,您需要解开该数据并检查哪个变量链接到哪个时间序列。

SDF python 包可以做到这一点:

import sdf
file = r'C:\tmp\sim_result.mat'
data = sdf.load(file)

# print name and final value of all trajectories in .mat file
for ds in data.datasets:
    print(ds.name)
    print(ds.data[-1])

您也可以先将 mat 文件转换为 sdf(使用

dsres2sdf.exe
,可在 Dymola 安装文件夹中找到),但正如您在上面看到的,这不是必需的。

如果SDF不能满足您的需求,还有DyMat

您还可以通过

readTrajectory
通过 dymola python 接口检索数据,但这是最慢的解决方案,并且需要一个正在运行的 dymola 实例。

© www.soinside.com 2019 - 2024. All rights reserved.