pythonでMATLAB互換のmatファイルを保存する

はじめに

pythonで処理したデータを保存するときにどの形式で保存しようってなります.

numpyの機能でも保存できるけど独自規格だし種類もいっぱいあっていまいちです・・・

csvとかだとテキストデータになるので容量がめちゃくちゃ大きくなります.

そこで選んだのがMATLABでおなじみのmatファイルです.

pythonからmatで保存すればMATLABでも使えますし容量も小さくいい感じです.

この記事ではpythonのどの変数型がmatlabのどの変数に対応するかを説明します.

 

pythonからmat保存する

pythonからmatファイルを保存するにはscipy.ioを使います.

使い方はこんな感じ.

scipy.io.savemat(filename, {“matval1”:pyval1})

matvalがmatに保存される変数名,pyvalがpythonで使っていた変数です.

参考:https://docs.scipy.org/doc/scipy-0.19.1/reference/generated/scipy.io.savemat.html

 

例えばこんな感じです.

matファイルをMATLAB開くとこんな感じです.

 

 

データ型の互換性

scipyは優秀なのでpythonの変数をMATLAB対応のものに変換してくれます.

数値の型ならまあintだとかfloatだとか気にするだけですが,文字列とか構造体はややこしく感じたのでまとめます.

(pythonとかMATLABの専門用語は詳しくないので,言葉の使い方を間違ってる箇所があるかもしれません.)

 

文字列

classがlistの要素がstrで保存するとMATLABではcharで保存されます.

 

numpyのobject型を使うと,MATLABでcellとなります.

 

 

構造体

dictを使うとMATLABではこうなります.

 

numpyのStructured arraysを使うと別の感じになります.

コメントを残す

メールアドレスが公開されることはありません。