来自 Dymola 仿真的 .mat 结果的数据处理
data processing of the .mat result from Dymola simulation
我正在尝试使用 Dymola 的 .mat 结果进行数据处理。我的计划是使用 MATLAB。我有几个关于 .mat 文件的问题:
- 如果我直接将.mat文件加载到MATLAB中,数据结构很奇怪,我必须使用Dymola附带的MATLAB脚本来加载.mat文件。是否有关于数据如何存储在 .mat 文件中的解释?
- 用结果绘制图表时,我想更改单位,但我不确定如何让 Dymola 以我想要使用的单位输出数据。当 Dymola 将数据输出到 .mat 文件时,是否有任何设置允许我更改单位?
如果您生成文本结果文件(它也可能在文档中的某处),您可以获得结果文件基本 data-structure 的解释,最相关的部分是:
Matrix with 4 columns defining the data of the signals:
dataInfo(i,1)= j: name i data is stored in matrix "data_j".
(1,1)=0, means that name(1) is used as abscissa
for ALL data matrices!
dataInfo(i,2)= k: name i data is stored in column abs(k) of matrix
data_j with sign(k) used as sign.
为了简单起见:最多有两个data-matrices,所有数据矩阵的横坐标都是“时间”。
- 您目前无法以特定单位直接输出mat-files。
但是,您可以使用特定单位输出 csv-files。
关于文件格式,请注意,有一个实用程序可以将 MAT 文件转换为简单的基于 HDF5 的格式,如果这样 post-processing 更容易的话。 MATLAB 和 Python 都有脚本来读取此类文件(扩展名 SDF)。
介绍了 Modelica Dymola 创建的 .mat 文件的结构 here briefly。但是关于这种文件格式,您应该了解的是 Dymola 以这种方式将模拟变量保存在两个不同的 mat-file 变量中:
- 所有变量的名称和描述都保存在 .mat 文件中的两个不同的独立变量中,即
name
和 description
。
- 如果一个变量有一个常量值并且它的值不随时间改变(如标量变量),它保存在 .mat 文件中的
data_1
变量中。
- 否则,它保存在 .mat 文件中的
data_2
变量中。
像这样保持可变数据是我的 Dymola 使用的一种技术,可以在将模拟数据保存在大文件中的同时获得最佳性能。
要读取这些由 Dymola 创建的 mat 文件而不使用 Dymola 本身,您可以使用像 MATIO 这样的 .mat reader 库来读取数据,然后自己解释结果。
我正在尝试使用 Dymola 的 .mat 结果进行数据处理。我的计划是使用 MATLAB。我有几个关于 .mat 文件的问题:
- 如果我直接将.mat文件加载到MATLAB中,数据结构很奇怪,我必须使用Dymola附带的MATLAB脚本来加载.mat文件。是否有关于数据如何存储在 .mat 文件中的解释?
- 用结果绘制图表时,我想更改单位,但我不确定如何让 Dymola 以我想要使用的单位输出数据。当 Dymola 将数据输出到 .mat 文件时,是否有任何设置允许我更改单位?
如果您生成文本结果文件(它也可能在文档中的某处),您可以获得结果文件基本 data-structure 的解释,最相关的部分是:
Matrix with 4 columns defining the data of the signals:
dataInfo(i,1)= j: name i data is stored in matrix "data_j".
(1,1)=0, means that name(1) is used as abscissa
for ALL data matrices!
dataInfo(i,2)= k: name i data is stored in column abs(k) of matrix
data_j with sign(k) used as sign.
为了简单起见:最多有两个data-matrices,所有数据矩阵的横坐标都是“时间”。
- 您目前无法以特定单位直接输出mat-files。 但是,您可以使用特定单位输出 csv-files。
关于文件格式,请注意,有一个实用程序可以将 MAT 文件转换为简单的基于 HDF5 的格式,如果这样 post-processing 更容易的话。 MATLAB 和 Python 都有脚本来读取此类文件(扩展名 SDF)。
介绍了 Modelica Dymola 创建的 .mat 文件的结构 here briefly。但是关于这种文件格式,您应该了解的是 Dymola 以这种方式将模拟变量保存在两个不同的 mat-file 变量中:
- 所有变量的名称和描述都保存在 .mat 文件中的两个不同的独立变量中,即
name
和description
。 - 如果一个变量有一个常量值并且它的值不随时间改变(如标量变量),它保存在 .mat 文件中的
data_1
变量中。 - 否则,它保存在 .mat 文件中的
data_2
变量中。 像这样保持可变数据是我的 Dymola 使用的一种技术,可以在将模拟数据保存在大文件中的同时获得最佳性能。
要读取这些由 Dymola 创建的 mat 文件而不使用 Dymola 本身,您可以使用像 MATIO 这样的 .mat reader 库来读取数据,然后自己解释结果。