#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