如何读取 JModelica 中的 .mat 输出文件?

How to read .mat output files in JModelica?

为了节省时间,我尝试读取 .mat 文件而不是再次模拟模型。

我用了scipy.io.loadmat,但效果不佳:

res = loadmat('ChatteringControl_result.mat')
res.keys()

['Aclass', 'dataInfo', 'name', 'data_2', 'data_1', 'description']

键不是变量名,不知道如何获取变量值

然后我搜索了分辨率,发现DyMat它适用于其他变量但无法获得time

res1 = DyMat.DyMatFile('ChatteringControl_result.mat')
T = res1['T']
t = res1['time']

KeyError: 'time'

那么,我怎样才能在 JModelica 中获得所有结果?(当然没有打开 Matlab。)例如,JModelica 中的内置函数?

非常感谢!

https://openmodelica.org/doc/OpenModelicaUsersGuide/latest/technical_details.html#the-matv4-result-file-format 描述格式。我想您还可以查看 Dymola 手册以了解更多详细信息。

至于 DyMat,没有理由获取时间轨迹,因为您通常会查找变量在特定时间的值。据我所知,开始和停止时间在 data_1 矩阵中(或者通常从 data_2 矩阵中的第一条轨迹中获取)。 (data_2 矩阵可能会被插值,因此其中存储的时间值可能无法反映求解器内部采取的实际步骤)

要使用 JModelica 加载 mat 文件,您可以使用此代码:

from pyfmi.common.io import ResultDymolaBinary

res = ResultDymolaBinary("MyResult.mat")

var = res.get_variable_data("myVar")

var.t #Time trajectory
var.x #Variable trajectory