質問

Python でバイナリ MATLAB .mat ファイルを読み取ることは可能ですか?

SciPy が .mat ファイルの読み取りをサポートしていると主張しているのを見たことがありますが、私はそれをサポートできませんでした。SciPy バージョン 0.7.0 をインストールしましたが、 loadmat() 方法。

役に立ちましたか?

解決

インポートが必要とされ、import scipy.io ...

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

他のヒント

MATLAB配列のバージョン7.3のための

どちら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のdictlistオブジェクトを使用して、簡単なPythonのデータ構造にMATファイルに保存されているすべての変数。数値およびセルアレイは、ネストされたリストを順序付け列に変換されます。アレイは、ただ1つの要素と配列を除去するために圧迫されています。結果として得られるデータ構造は JSON のフォーマットと互換性のある単純型で構成されている。

例:Pythonのデータ構造にMATファイルをロードします。

from mat4py import loadmat

data = loadmat('datafile.mat')

変数dataはMATファイルに含まれている変数と値とdictである。

のMATファイルへのPythonのデータ構造を保存します。

Pythonのデータは、機能savematと、MATファイルに保存することができます。データはloadmatと同じ方法で構成されなければならない、すなわち、それはdictliststrint、及び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 つのクラスとサブノードがあります
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top