見出し画像

【脳波解析】ヒルベルト変換

 本ページでは「Analyzing Neural Time Series Data Theory and Practice」(Mike X. Cohen and Jordan Grafman)のChapter14をベースに、ヒルベルト変換について、勉強していきます。
前回のノートはこちら↓

ヒルベルト変換とは?

 ヒルベルト変換は、オイラーの公式を用いて、パワーの包絡線を実部のみの信号から虚部の信号を抽出できます。包絡線を抽出したい!と言うときに使えるのがヒルベルト変換です。ヒルベルト変換以外にも、2 乗とローパスフィルターを使って崩落線を出すこともできますが、ここではヒルベルト変換のみを紹介します(もう一つのやり方を詳しく知りたい、と言う方はMatlabヘルプセンター公式HPを覗いてください。)。
 フィルターヒルベルトのメリットとして、フィルター周波数特性を柔軟に操作(モルレーウェーブレットでガウス曲線)することができることがあげられます。一方、デメリットとして、Matlab signal-processing toolbox 上で機能的な制約があり、さらに、バンドパスフィルタをかける処理は、ウェーブレット変換をかけるよりも時間がかかります。また、高周波ほど弱く、低周波ほど強くデータに寄与するため、ヒルベルト変換にかける前のデータを周波数帯域ごとにフィルタリングする必要あります。

ヒルベルト変換のかけ方

 ここでは、Matlab上でヒルベルト変換をかけるやり方を2通り紹介します。一つ目はアナログ的?なやり方から!
1) FFTにかけたEEGデータを複製したものに複素数iを乗算
→ Mcos(2πft)をiMcos(2πft)に変換します。
2) 正(0Hzとナイキスト周波数の間にある周波数)/ 負(その範囲外の周波数)の周波数を同定
3) 正(負)の周波数係数を反時計(時計)回りに1/4サイクル回転
→ 1) で求めたiMcos(2πft)を、iMsin(2πft)に変換します
4) IFFTにかける
→解析信号(負の周波数を持たない信号)を得ることができます。

また、コマンドウィンドウよりヒルベルト変換を直接データにかけることも可能です。
1) 三次元データを二次元データに変更 

>> EEG.data = EEG.data(:,:);

2) ヒルベルト変換を実行

>> EEG.data = abs(hilbert(EEG.data’)’);



最後に、このノートにスキを押してくれると、とても嬉しい&更新のモチベが爆上がりします!ここまで読んでくださり、ありがとうございました。
<謝辞>
このnoteを書く上で、弊ラボの原あゆみさんにご協力いただきました。ありがとうございます。

この記事が気に入ったらサポートをしてみませんか?