【EDFデータとは】
心拍データなど生体信号に使用されるデータ。
拡張子が.edfとなっている。
この状態では,解析が難しいため,.csvファイルや.matファイルに変換したい。
【matファイルとは】
Matlabで使用されるデータファイル。
研究環境がMatlabであるため,本記事ではedfファイルをmatファイルに変換する方法を忘備録として記載する。
【変換プログラム構築までの全体の流れ】
2022年3月時点では,フリーのソフトがなく,有償ソフトのみであった。
したがって,pythonを用いて変換プログラムを自作する。
以下,簡単な手順。
- python(Anaconda)をインストール
- Spyder(エディタ)を利用
- 下記のコマンドにより,変換に必要なものをインストール
pip install pyedflib - プログラムを作成(後述)
【ソースコード】
import numpy as np
import pyedflib
import matplotlib.pyplot as plt
import matplotlib.pyplot as plt2
import csv
import scipy.io
import os
filename = "test";
edf = pyedflib.EdfReader("EDFdata/"+filename+'.EDF')# ------- .matファイル保存用フォルダ作成
foldername = 'mat_'+filename;# フォルダが存在していない場合のみ,フォルダ作成
if os.path.exists(foldername) == False:
os.mkdir(foldername);
# ラベル読み込み
labels = edf.getSignalLabels()
print(labels)
# 計測時間,サンプリング周波数,データ点数,計測日の表示
print("Duaration:"+str(edf.getFileDuration()))
print("Freq.:"+str(edf.getSampleFrequencies()))
print("N-Sample(=Freq x Duaration):"+str(edf.getNSamples()))
print("Date:"+str(edf.getStartdatetime()))
# 信号の描画
count = 0;
for n in labels: # ラベル数のグラフを描画
plt.plot(edf.readSignal(count)[0:len(edf.readSignal(count))],label=labels[count])
plt.legend()
plt.show(count+1)
# matファイルの保存
data = edf.readSignal(count)[0:len(edf.readSignal(count))];
scipy.io.savemat(foldername+'/'+labels[count]+'_'+filename+".mat", {'data_'+filename:data})
count = count + 1;
【参考webサイト】
併せて確認推奨の過去記事