MATLABのdatetime型をPythonで扱えるようにする方法
MATLABのdatetime型
MATLABの型としてdatetime型がある。Pythonでdatetime型のデータがあるMATファイルを読み込んだ場合、そのままでは扱えない。
例えば、図1に示すようなdatetime型を持つMATファイルを作成する。
これをPythonで読み込む。
読み込み方は、関連記事のPythonからMATLAB関数を使う方法で見たように、matlabengineライブラリを用いる。
import matlab.engine
# matlab関数を使用するためのmatlab engine起動
eng = matlab.engine.start_matlab()
# MATLABのload関数の呼び出し
data = eng.load("datedata.mat")
これを実行すると、dataには、MATファイルに保存された変数が読み込まれる。
{'date': <matlab.object object at 0x0000023D2F8E26D0>}
dataには、辞書型で結果が返ってくるので、変数dateにアクセスするには、
data['date']
とすれば良い。
結果
<matlab.object object at 0x00000271D13D26D0>
datetime型の場合は、結果に示したように中身のデータを取得できない。
図2に示すような配列の場合は、うまくいく。
結果
[[1.0],[2.0],[3.0],[4.0],[5.0],[6.0],[7.0],[8.0],[9.0],[10.0]]
datetime型を取得するには、文字列を経由するとよい。そこでMATLAB関数のstring関数で変換してから読み込む。
import matlab.engine
# matlab関数を使用するためのmatlab engine起動
eng = matlab.engine.start_matlab()
# MATLABのload関数の呼び出し
data = eng.load("datedata.mat")
convert_data = eng.string(data['date'])
結果
['2020/01/01', '2020/01/02', '2020/01/03', '2020/01/04', '2020/01/05',
'2020/01/06', '2020/01/07', '2020/01/08', '2020/01/09', '2020/01/10']
これにより、datetime型のデータが読み込まれていることが分かる。
公式ドキュメントではcell 配列にする方法を紹介している。
関連記事
PythonからMATLAB関数を使う方法
https://note.com/elemag/n/nb60d95bc4a9a?sub_rt=share_pw
サイト
https://sites.google.com/view/elemagscience/%E3%83%9B%E3%83%BC%E3%83%A0
この記事が気に入ったらサポートをしてみませんか?