#author("2019-10-21T16:47:36+09:00","default:Miyashita","Miyashita")
#author("2019-10-21T16:48:38+09:00","default:Miyashita","Miyashita")
*matファイルからの読み込み [#g8b972dc]
** -v7.3 形式 (HDF5) の mat [#wbdaa460]
MATLAB の -v7.3 で保存すると,HDF5 形式になるようなので,h5py というライブラリを使用する.
MATLAB の -v7.3 で保存すると,HDF5 形式になるようなので,h5py というライブラリを使用する.
#codeprettify(lang-python){{
import h5py

f = h5py.File('matfile.mat','r')
var = f['var']
}}
~
~

** -v7.3 以前の mat [#s3485716]
scipyを使えば,MATLABのmatファイルをそのままpythonの中に導入できる.
scipy を使えば,MATLAB の mat ファイルをそのまま python の中に導入できる.
#codeprettify(lang-python){{
from scipy import io
}}
のようにインポートをしたとすると,
#codeprettify(lang-python){{
matdata = io.loadmat(filename, squeeze_me=True)
}}
でmatdataにmatファイル全部の変数が入る.squeeze_me=Trueは要素数1の次元を消す.~
で matdata に mat ファイル全部の変数が入る.squeeze_me=True は要素数1の次元を消す.~
変数を取り出したければ,
#codeprettify(lang-python){{
t = matdata["t"]
}}
のようにする.
#codeprettify(lang-python){{
t = io.loadmat(filename, squeeze_me=True)["t"]
}}
でも読み込めるが,1行で変数2つ以上抜き出したい時にどうするのかはわからない.←map関数でいいような気がしてきた~
でも読み込めるが,1行で変数2つ以上抜き出したい時にどうするのかはわからない.←map 関数でいいような気がしてきた~
~
HDF形式には対応しておらず,-v7.3 の matファイルを読もうとすると下記のようなエラーが出た.
HDF 形式には対応しておらず,-v7.3 の matファイルを読もうとすると下記のようなエラーが出た.
 File "/usr/local/lib/python3.6/dist-packages/scipy/io/matlab/mio.py", line 78, 
 in mat_reader_factory
    raise NotImplementedError('Please use HDF reader for matlab v7.3 files')
 NotImplementedError: Please use HDF reader for matlab v7.3 files

Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes