【问题标题】:How can I export variables from .mat file (generated by Dymola) to .csv using python如何使用 python 将变量从 .mat 文件(由 Dymola 生成)导出到 .csv
【发布时间】:2020-02-04 19:41:03
【问题描述】:

我是一名刚接触 Python 编码的学生。 我使用 Dymola 已经好几年了,现在我正在使用 Dymola/Python 界面,您可以通过该界面从 Python 内部操作 Dymola(用于构建股票模拟、全局敏感性分析等)。

现在,Dymola 始终以高效的不可读数据结构生成 .mat 文件。我想知道如何使用 Python 脚本将我感兴趣的变量从 .mat 文件导出到 .csv? (我不希望将整个文件转换为 .csv,因为它太大了)

我知道 Python 的 DyMat 包应该可以完成这项工作,但要么我不理解代码,要么代码没有做它应该做的事情?有人有这方面的经验吗? 我可能错过了一些定义必须从哪个 .mat 文件读取/导出、我想要哪些变量以及 result.csv 文件应该存储在哪个目录中的代码?

import csv, numpy

def export(dm, varList, fileName=None, formatOptions={}):
    """Export DyMat data to a CSV file"""

    if not fileName:
        fileName = dm.fileName + '.csv'
    oFile = open(fileName, 'w')
    csvWriter = csv.writer(oFile)

    vDict = dm.sortByBlocks(varList)
    for vList in vDict.values():
        vData = dm.getVarArray(vList)
        vList.insert(0, dm._absc[0])
        csvWriter.writerow(vList)
        csvWriter.writerows(numpy.transpose(vData))

    oFile.close()

谢谢!

【问题讨论】:

    标签: python python-3.x matlab export-to-csv openmodelica


    【解决方案1】:

    由于这被标记为openmodelica,我提出了一个使用它的解决方案:

    filterSimulationResults("file.mat", "file.csv", {"x","y","z"}) 创建一个仅包含变量 x、y、z 的 csv 文件(如果您认为还是太大了,可以重新采样文件)。

    【讨论】:

    • 好的,谢谢!这也是模拟文件时的一种方法。但是,之后必须有一种方法来处理 .mat 文件,这样您就不必模拟您的 openmodelica/dymola 模型以导出为 .csv。我正在构建库存模拟,并希望模拟我的 1000 个模型一次(这需要很多时间),将包含所有内容的 .mat 文件存储在一个文件夹中,然后能够导出到 .csv。以后如果需要其他重要的变量进行后期处理,就不需要再模拟全部1000个模型了;-)
    【解决方案2】:

    在 Dymola 发行版中有一个名为 alist.exe 的实用程序,它允许您以 CSV 格式导出许多变量。

    另一种可能是将MAT文件转换为SDF格式,这是一个非常简单的HDF5解释。 HDF5 文件不像 MAT 文件那样紧凑,但您可以使用 ZIP/GZIP/7ZIP 压缩文件以减少存档存储。在 Dymola 发行版中,有用于读取 SDF 格式的 MATLAB 和 Python 脚本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-04
      • 1970-01-01
      • 1970-01-01
      • 2019-03-07
      • 1970-01-01
      • 2011-01-09
      • 2022-01-04
      相关资源
      最近更新 更多