我成功完成了为期一周的 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/