Как я могу экспортировать переменные из файла .mat (сгенерированного Dymola) в .csv, используя python - PullRequest
1 голос
/ 07 октября 2019

Я студент, который плохо знаком с программированием на Python. Я использую Dymola в течение нескольких лет, и теперь я использую интерфейс Dymola / Python, с помощью которого вы можете управлять Dymola изнутри Python (полезно для построения стандартных моделей, анализа глобальной чувствительности и т. Д.).

Теперь,Dymola всегда генерирует файлы .mat в эффективной нечитаемой структуре данных. Мне было интересно, как экспортировать интересующие меня переменные из этого .mat-файла в .csv, используя Python-скрипт? (Я не хочу, чтобы весь файл конвертировался в .csv, потому что он слишком большой)

Мне известен DyMat-пакет для Python, который должен выполнять эту работу, но я нене понимаете код или код не делает то, что должен делать? У кого-нибудь есть опыт с этим? Возможно, мне не хватает некоторого кода, определяющего, из какого файла .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()

Спасибо!

Ответы [ 2 ]

0 голосов
/ 08 октября 2019

В дистрибутиве Dymola есть утилита alist.exe, которая позволяет экспортировать несколько переменных в формате CSV.

Другая возможность - преобразовать файл MAT в формат SDF, который являетсяочень простая интерпретация HDF5. Файл HDF5 не такой компактный, как MAT-файл, но вы можете сжать файл, используя ZIP / GZIP / 7ZIP, чтобы уменьшить архивное хранилище. В дистрибутиве Dymola есть сценарии MATLAB и Python для чтения формата SDF.

0 голосов
/ 07 октября 2019

Поскольку это было помечено openmodelica, я предлагаю решение, использующее его:

filterSimulationResults ("file.mat", "file.csv", {"x","y", "z"}) создает csv-файл только с переменными x, y, z (если вы считаете, что он по-прежнему слишком велик, можно выполнить повторную выборку файла).

...