来自 Dymola 仿真的 .mat 结果的数据处理

data processing of the .mat result from Dymola simulation

我正在尝试使用 Dymola 的 .mat 结果进行数据处理。我的计划是使用 MATLAB。我有几个关于 .mat 文件的问题:

  1. 如果我直接将.mat文件加载到MATLAB中,数据结构很奇怪,我必须使用Dymola附带的MATLAB脚本来加载.mat文件。是否有关于数据如何存储在 .mat 文件中的解释?
  2. 用结果绘制图表时,我想更改单位,但我不确定如何让 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,所有数据矩阵的横坐标都是“时间”。

  1. 您目前无法以特定单位直接输出mat-files。 但是,您可以使用特定单位输出 csv-files。

关于文件格式,请注意,有一个实用程序可以将 MAT 文件转换为简单的基于 HDF5 的格式,如果这样 post-processing 更容易的话。 MATLAB 和 Python 都有脚本来读取此类文件(扩展名 SDF)。

介绍了 Modelica Dymola 创建的 .mat 文件的结构 here briefly。但是关于这种文件格式,您应该了解的是 Dymola 以这种方式将模拟变量保存在两个不同的 mat-file 变量中:

  • 所有变量的名称和描述都保存在 .mat 文件中的两个不同的独立变量中,即 namedescription
  • 如果一个变量有一个常量值并且它的值不随时间改变(如标量变量),它保存在 .mat 文件中的 data_1 变量中。
  • 否则,它保存在 .mat 文件中的 data_2 变量中。 像这样保持可变数据是我的 Dymola 使用的一种技术,可以在将模拟数据保存在大文件中的同时获得最佳性能。

要读取这些由 Dymola 创建的 mat 文件而不使用 Dymola 本身,您可以使用像 MATIO 这样的 .mat reader 库来读取数据,然后自己解释结果。