为了节省时间,我尝试读取.mat文件,而不是再次模拟模型。
我使用了scipy.io.loadmat,但效果不太好:
res = loadmat('ChatteringControl_result.mat')
res.keys()
['Aclass', 'dataInfo', 'name', 'data_2', 'data_1', 'description']键不是变量名,我也不知道如何获得变量值。
然后我搜索了分辨率,找到了DyMat,,它对其他变量很好,但不能得到。
res1 = DyMat.DyMatFile('ChatteringControl_result.mat')
T = res1['T']
t = res1['time']
KeyError: 'time'那么,我怎样才能在JModelica中得到所有的结果呢?(当然,没有打开Matlab ),比如,JModelica中的内置函数?
,谢谢!
发布于 2019-12-10 09:29:25
要使用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发布于 2019-12-10 07:15:42
file#-matv4 4-结果-文件格式描述了格式。我想你也可以在戴莫拉手册中了解更多细节。
至于DyMat,没有理由获得时间轨迹,因为您通常会查找变量在特定时间的值。据我所知,开始时间和停止时间都在data_1矩阵中(或者通常是从data_2矩阵的第一个轨迹得到的)。( data_2矩阵可以内插,因此存储在其中的时间值可能不反映求解者在内部采取的实际步骤)
https://stackoverflow.com/questions/59253157
复制相似问题