python - 打开大结果 mat-File 会引发缓冲区对于请求的数组来说太小

标签 python modelica dymola mat-file

我成功完成了为期一周的 Dymola 模拟,但却发现自己无法使用 DyMat 加载结果 mat 文件。

每次我尝试使用 Python 和 DyMat ( https://www.j-raedler.de/projects/dymat/ ) 打开它时,都会收到错误:

buffer is too small for requested array

问题似乎来自巨大的模型大小和数据记录。如果我只模拟 mat-File 打开时间的 1/3 就可以了。

有人知道如何解决这个问题吗?

最佳答案

在将 MAT 格式的大型 Dymola 模拟结果读取到 Python 时,我也遇到了类似的问题(即使我使用 modelicares 而不是 DyMat,请参阅 http://kdavies4.github.io/ModelicaRes/ )。对我来说,即使很少的变量写入文件,问题似乎也会出现在具有多个时间步长的结果中。

迄今为止有效的一种解决方法是:尽管无法在 Python 中加载大型 MAT 文件,但我可以将结果文件加载回 Dymola 并从那里将结果导出为 SDF 或 CSV。当然,缺点是生成的 SDF 或 CSV 文件甚至比原始 MAT 文件更大,并且这涉及另一个手动步骤,但从那里,我总是能够将 SDF 或 CSV 数据加载到 Python 中,例如使用 sdf Python 包。如果这种情况发生得更频繁,也可能可以编写一个 MOS 脚本来自动执行将 MAT 文件加载到 Dymola 并将其导出到 SDF 或 CSV 的过程。

此解决方案并不理想,但作为解决方法可能会有所帮助。如果有更好的解决方案,我也很乐意听到。

关于python - 打开大结果 mat-File 会引发缓冲区对于请求的数组来说太小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70513151/

相关文章:

python - 奇怪的时间戳转换

python - 从 csv 文件中在 networkx 中创建边

python - 如何在 Django 中更改上传文件的文件名?

modelica - 在 Modelica 中正确使用 inStream()

jupyter-notebook - 为 JModelica 设置 Jupyter Notebook

dymola - Dymola 标志列表

python - Scrapy 的最佳性能

modelica - 事件触发的数组元素定义给出了错误的值

c - 从 Dymola 多次调用 dll

modelica - 如何在 Dymola 中获取结构雅可比行列式?