6

我的问题是打开一些由 Dymola 生成的 MAT 文件。对于小型模型,MATLAB 有时打开创建的 MAT 文件没有问题。然后我可以看到工作区中的结构。但我也有一个包含 31.536.000 个数据点的巨大模拟模型。对于这个模型,MATLAB 无法打开它。我总是得到提示

Error using load
Unable to read MAT-file C:\Users\Patrick\Desktop\DymolaWork\GridHH_SLP.mat

File may be corrupt.

我的 MATLAB 版本是 R2014a 64 位,我的 Dymola 版本是 2014 FD001 64 位。我还尝试使用 MathWorks 主页上提供的工具来解决该问题,以解决损坏的变量名称 ( loadfixnames/ savebadnames)。但这并不完全正确,因为此工具无法恢复矩阵data_2。任何人都可以给我一个建议来解决这个问题吗?

4

3 回答 3

3

Matlab4格式应该没有问题。矩阵的行数和列数存储为 2 个 32 位无符号整数,这应该可以实现大小为 8*(2^32-1) *(2^32-1) 的双精度矩阵。这只是读取格式的实现问题。

给定数据点的数量,如果模型有大约 136 个以上的变量,则 data_2 矩阵的总大小大于 4GB(如果这是真的,您可能可以从 GridHH_SLP.mat 的文件大小中看出)。如果是这种情况,也许 Matlab 没有被编程来处理这种大小的矩阵。我在 Octave 中尝试了一个 39GB 的 data_2 矩阵,它只是说:error: out of memory or dimension too large for Octave's index type. 我可以在 OpenModelica 中打开相同的文件(但绘制如此大的文件效率低下,因为默认情况下它们没有以转置格式保存)。

如果 Dymola 能够输出较少数量的变量,则该文件可以在 Matlab 中正常工作。您还可以尝试alist使用 Dymola 附带的程序将 mat 文件中的选择变量输出为 csv 格式(如果 alist 可以处理大文件)。

于 2014-06-01T15:08:12.030 回答
0

通过在模型中使用所谓的变量选择,您可以将模拟结果文件减小到更易于管理的大小。更多腾讯版本的 Dymola 支持。

于 2016-01-21T07:32:47.043 回答
0

根据我们的经验,当在 Matlab 中打开 Dymola 导致失败时,Octave 可以做得很好。因此,如果您不喜欢 Octave 中的整体工作流程,您可以简单地使用它来读取数据并将其转换为更常规的 mat 文件,然后在 Matlab 中打开它。

于 2019-09-26T10:21:32.593 回答