如何读取 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
为了节省时间,我尝试读取 .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