564 Stimmen

Lesen von .mat-Dateien in Python

Ist es möglich, binäre MATLAB .mat-Dateien in Python zu lesen?

Ich habe gesehen, dass SciPy angeblich Unterstützung für das Lesen von .mat-Dateien hat, aber ich bin erfolglos damit. Ich habe SciPy Version 0.7.0 installiert, und ich kann nicht finden, die loadmat() Methode.

770voto

Gilad Naor Punkte 19303

Ein Import ist erforderlich, import scipy.io ...

import scipy.io
mat = scipy.io.loadmat('file.mat')

215voto

vikrantt Punkte 2251

Weder scipy.io.savemat noch scipy.io.loadmat für MATLAB-Arrays der Version 7.3 funktionieren. Das Gute daran ist jedoch, dass MATLAB-Dateien der Version 7.3 hdf5-Datensätze sind. Sie können also mit einer Reihe von Tools gelesen werden, darunter NumPy .

Für Python benötigen Sie die h5py Erweiterung, die HDF5 auf Ihrem System voraussetzt.

import numpy as np
import h5py
f = h5py.File('somefile.mat','r')
data = f.get('data/variable1')
data = np.array(data) # For converting to a NumPy array

33voto

Speichern Sie die .mat-Datei zunächst als:

save('test.mat', '-v7')

Danach verwenden Sie in Python die übliche loadmat Funktion:

import scipy.io as sio
test = sio.loadmat('test.mat')

27voto

Cleb Punkte 22735

Es gibt ein schönes Paket namens mat4py die leicht installiert werden können mit

pip install mat4py

Es ist einfach zu bedienen (von der Website aus):

Laden von Daten aus einer MAT-Datei

Die Funktion loadmat lädt alle in der MAT-Datei gespeicherten Variablen in eine einfache Python-Datenstruktur, wobei nur die Python-Funktion dict y list Objekte. Numerische und zelluläre Arrays werden in zeilenweise verschachtelte Listen umgewandelt. Arrays werden gequetscht, um Arrays mit nur einem Element zu eliminieren. Die resultierende Datenstruktur besteht aus einfachen Typen, die mit der JSON Format.

Beispiel: Laden einer MAT-Datei in eine Python-Datenstruktur:

from mat4py import loadmat

data = loadmat('datafile.mat')

Die Variable data es un dict mit den in der MAT-Datei enthaltenen Variablen und Werten.

Speichern einer Python-Datenstruktur in einer MAT-Datei

Python-Daten können in einer MAT-Datei gespeichert werden, mit der Funktion savemat . Die Daten müssen auf die gleiche Weise strukturiert werden wie bei loadmat , d.h. sie sollte aus einfachen Datentypen bestehen, wie dict , list , str , int y float .

Beispiel: Speichern einer Python-Datenstruktur in einer MAT-Datei:

from mat4py import savemat

savemat('datafile.mat', data)

Der Parameter data ist eine dict mit den Variablen.

17voto

Daniel Punkte 36242

Wenn MATLAB 2014b oder eine neuere Version installiert ist, kann die MATLAB-Engine für Python verwendet werden könnte:

import matlab.engine
eng = matlab.engine.start_matlab()
content = eng.load("example.mat", nargout=1)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X