回答:
インポートが必要ですimport scipy.io
...
import scipy.io
mat = scipy.io.loadmat('file.mat')
save('myfile.mat','-v7')
もscipy.io.savemat
、scipy.io.loadmat
MATLABアレイバージョン7.3 でも機能しません。しかし、良い点は、MATLABバージョン7.3ファイルがhdf5データセットであることです。そのため、NumPyなどのいくつかのツールを使用して読み取ることができます。
Pythonの場合h5py
、システムにHDF5 が必要な拡張機能が必要です。
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
save
(少なくともMatlab R2014bでは)を使用すると、上記の手法を使用して読み取ることができないファイルになります。'-v7.3'フラグを使用すると、数値データを問題なく読み取ることができます。
save('filename', '-v7.3', 'var1');
mat4py
を使用して簡単にインストールできるという素敵なパッケージがあります
pip install mat4py
(ウェブサイトから)使用するのは簡単です:
MATファイルからデータを読み込む
この関数loadmat
は、MATファイルdict
とlist
オブジェクトのみを使用して、MATファイルに格納されているすべての変数を単純なPythonデータ構造にロードします。数値配列とセル配列は、行順にネストされたリストに変換されます。配列は、要素が1つしかない配列を削除するために圧縮されます。結果のデータ構造は、互換性のある単純な型で構成されます JSON形式ます。
例:MATファイルをPythonデータ構造にロードします。
from mat4py import loadmat
data = loadmat('datafile.mat')
変数data
はdict
、MATファイルに含まれている変数と値を含むa です。
Pythonデータ構造をMATファイルに保存する
関数を使用して、PythonデータをMATファイルに保存できますsavemat
。データはと同じように構造化する必要があるloadmat
ように、それは、単純なデータ型で構成されなければならない、すなわちdict
、list
、str
、int
、およびfloat
。
例:Pythonデータ構造をMATファイルに保存します。
from mat4py import savemat
savemat('datafile.mat', data)
パラメータdata
はdict
、変数を持つものでなければなりません。
mat4py/cmd.py my.mat
書き込みmy.json
、1つの長い行。)
mat4py.loadmat.ParseError: Can only read from Matlab level 5 MAT-files
Python用のMATLABエンジンもあります。MathWorks自体によるます。MATLABをお持ちの場合、これは検討に値するかもしれません(私は自分で試したことはありませんが、MATLABファイルを読み取るだけよりも多くの機能を備えています)。ただし、他のユーザーへの配布が許可されているかどうかはわかりません(それらのユーザーがMATLABを持っている場合はおそらく問題ありません。それ以外の場合は、NumPyが正しい方法でしょうか?)。
また、すべての基本を自分で実行したい場合は、MathWorksがファイル形式の構造に関する詳細なドキュメントを提供します(リンクが変更された場合は、Google matfile_format.pdf
またはそのタイトルを探してくださいMAT-FILE Format
)。個人的に思ったほど複雑ではありませんが、これが最も簡単な方法ではありません。それはまた、.mat
、サポートファイルのます。
いくつかの基本的な.mat
ファイルを読み取ることができる「小さな」(約700行)Pythonスクリプトを作成しました。私はPythonの専門家でも初心者でもないため、それを書くのに約2日かかりました(上記のリンクにあるMathWorksのドキュメントを使用)。私は多くの新しいことを学びました、そしてそれは(ほとんどの場合)とても楽しかったです。仕事でPythonスクリプトを作成したので、公開できないと思いますが、ここでアドバイスを提供できます。