Python で .mat ファイルを読み取る
質問
Python でバイナリ MATLAB .mat ファイルを読み取ることは可能ですか?
SciPy が .mat ファイルの読み取りをサポートしていると主張しているのを見たことがありますが、私はそれをサポートできませんでした。SciPy バージョン 0.7.0 をインストールしましたが、 loadmat()
方法。
解決
インポートが必要とされ、import scipy.io
...
import scipy.io
mat = scipy.io.loadmat('file.mat')
他のヒント
どちらscipy.io.savemat
、またscipy.io.loadmat
作業。しかし、良い部分は、MATLABバージョン7.3のファイルがHDF5データセットであるということです。そこで、彼らは numpyのを含む多くのツールを使用して読み取ることができます。
は、Pythonの場合は、あなたのシステムにHDF5を必要h5py
拡張を、必要になります。
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
まずとして.MATファイルを保存
save('test.mat', '-v7')
その後、Pythonで、通常のloadmat
機能を使用します:
import scipy.io as sio
test = sio.loadmat('test.mat')
簡単
を使用してインストールすることができますmat4py
に呼ばれる素敵なパッケージがあります
pip install mat4py
(ウェブサイトから)を使用することは簡単です。
の MATファイルからデータをロードする
関数loadmat
ロードのみPythonのdict
とlist
オブジェクトを使用して、簡単なPythonのデータ構造にMATファイルに保存されているすべての変数。数値およびセルアレイは、ネストされたリストを順序付け列に変換されます。アレイは、ただ1つの要素と配列を除去するために圧迫されています。結果として得られるデータ構造は JSON のフォーマットと互換性のある単純型で構成されている。
例:Pythonのデータ構造にMATファイルをロードします。
from mat4py import loadmat
data = loadmat('datafile.mat')
変数data
はMATファイルに含まれている変数と値とdict
である。
の のMATファイルへのPythonのデータ構造を保存します。
Pythonのデータは、機能savemat
と、MATファイルに保存することができます。データはloadmat
と同じ方法で構成されなければならない、すなわち、それはdict
、list
、str
、int
、及びfloat
ように、単純なデータ型で構成されなければならない。
例:MAT-ファイルにPythonのデータ構造を保存します:
from mat4py import savemat
savemat('datafile.mat', data)
パラメータdata
が変数とdict
ものでなければならない。
MATLABの2014b以降がインストールされ、 MATLABエンジンについてPythonのには使用することができます:
import matlab.engine
eng = matlab.engine.start_matlab()
content = eng.load("example.mat", nargout=1)
ファイルの読み取り
import scipy.io
mat = scipy.io.loadmat(file_name)
MAT変数の型を調べる
print(type(mat))
#OUTPUT - <class 'dict'>
の キー 辞書の中には MATLAB 変数, 、 そしてその 価値観 は それらの変数に割り当てられたオブジェクト.
もあります。 Python 用 MATLAB エンジン MathWorks 自体による。MATLAB をお持ちの場合は、これを検討する価値があるかもしれません (私は試したことはありませんが、MATLAB ファイルを読み取るだけではなく、より多くの機能があります)。ただし、他のユーザーに配布することが許可されているかどうかはわかりません (その人が MATLAB を持っている場合はおそらく問題ありません)。それ以外の場合は、おそらく NumPy が正しい方法でしょうか?)。
また、基本的なことをすべて自分でやりたい場合は、 MathWorks が提供する (リンクが変更された場合は、Google で検索してみてください matfile_format.pdf
またはそのタイトル MAT-FILE Format
) ファイル形式の構造に関する詳細なドキュメント。私が個人的に思っていたほど複雑ではありませんが、明らかにこれが最も簡単な方法ではありません。また、機能の数によっても異なります。 .mat
-サポートしたいファイル。
いくつかの基本的な内容を読み取ることができる「小さな」(約 700 行) Python スクリプトを作成しました。 .mat
-ファイル。私は Python の専門家でも初心者でもありませんが、(上にリンクされている MathWorks ドキュメントを使用して) これを書くのに約 2 日かかりました。たくさんの新しいことを学びましたし、(ほとんどの場合)とても楽しかったです。仕事で Python スクリプトを書いたので、公開できないのが残念ですが…。しかし、ここでいくつかアドバイスできます。
- まずドキュメントを読んでください。
- 16 進エディタを使用します (例: 高さ×奥行き)リファレンスを調べてください
.mat
-解析したいファイル。 - バイトを .txt ファイルに保存し、各行に注釈を付けることで、各バイトの意味を理解してください。
- クラスを使用して各データ要素を保存します (例:
miCOMPRESSED
,miMATRIX
,mxDOUBLE
, 、 またはmiINT32
) - の
.mat
-files の構造は、データ要素をツリー データ構造で保存するのに最適です。各ノードには 1 つのクラスとサブノードがあります