2016-10-13 9 views
0

Ich versuche, von Python ein Skript in Matlab ausführen, die einen Simulink-Modus ausführen, eine Variable als Power.mat speichern und diese Variable in Python lesen. Ich verwende Python 2.7 unter Windows.laden .mat-Datei von Python

Ich habe versucht, die Bibliothek hdf5storage zu verwenden, um die Datei zu lesen:

import hdf5storage 
x=hdf5storage.loadmat('Power.mat','r') 

aber ich habe den Fehler angebracht. error

Welches könnte das Problem sein? Ich habe auch mit der Bibliothek h5py versucht, aber ich bekomme den gleichen Fehler. Die Datei .mat scheint nicht beschädigt zu sein, da ich sie ohne Probleme in Matlab geöffnet habe.

Danke!

+0

Ist das relevant? http://stackoverflow.com/questions/31287744/corrupt-files-with-creating-hdf5-files-without-them-h5py – cdarke

+0

'x = hdf5storage.loadmat ('Power.mat')' sollte funktionieren, obwohl es dauert ewig, die Pakete herunterzuladen, die notwendig sind, um es zu testen :) –

+1

Hast du 'Power.mat' als MAT-Datei der Version 7.3 gespeichert? Frühere Versionen sind nicht HDF5. Von MATLAB: 'type ('Power.mat')' sagt Ihnen die MAT-Dateiversion. Verwenden Sie 'save ('Power.mat', '-v7.3')', um die Version anzugeben. – smn

Antwort

2

Sie können scipy.io verwenden, um Daten zwischen Python und Matlab auszutauschen. Zu diesem Zweck gibt es Funktionen namens savemat und loadmat.

So etwas sollte funktionieren:

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

Als Referenz http://docs.scipy.org/doc/scipy/reference/generated/scipy.io.loadmat.html

+1

Es gibt vier verschiedene '.mat' Dateiformate. Die ersten drei, 'v4',' v6' und 'v7', sind proprietäre Binärformate. Das ist was "scipy" öffnen kann. Die letzte, 'v7.3', ist eine spezialisierte hdf5-Datei. Das kann "hdf5storage" öffnen. Technisch gesehen kann es von allem geöffnet werden, das mit hdf5-Dateien umgehen kann, aber hdf5storage hat einige Werkzeuge, um die MATLAB-spezifischen Bits elegant zu handhaben. Ansonsten erhält man eine ziemlich hässliche (aber immer noch brauchbare) Ausgabe. – TheBlackCat

0

diesen Code Versuchen:

import h5py 
Data = h5py.File('File.mat') 
Verwandte Themen