特定の時点での脳波のパワー

私は、EEGマシンの学習問題のための機能を構築する過程にあり、どの機能が有用かについていくつかの読書をしてきました。アルファバンド(8-12Hz)のパワーが私のカテゴリーをよく区別できることが分かります。ニュアンスは、1つのカテゴリについては、アルファパワーが上昇してから時系列に落ちるが、他のカテゴリでは、アルファパワーは低いレベルになり、次に上昇する

私はかなりきれいなアルファ波を私に与えるバターワースフィルター信号を持っていますが、シリーズ上のあらゆる時点でこのバンドのパワーを決定することは可能ですか?

フィルタリングされた信号だけで計算をやり直すことができれば、FFTの実行に頼らなくても理想的です(最終的な目標はオンラインでこれを行うことです)

それは単純に各時点での振幅の二乗になりますか?または、これに対して特定のFFT /時間 - 周波数タイプ分析を実行する必要がありますか?

私はこれのためにいくつかのPythonコードを見つけようとしてきましたが、ほとんどの運がなかったのは、

0

2 答え

Goertzelアルゴリズムを使用すると、離散フーリエ変換の個々の項を計算することができ、FFTよりも効率的です。しかし、後でアルファ以外のバンドのスペクトルを計算したい場合、GoertzelはFFTよりも計算上高価になるでしょう。

計算力に真剣に制限されない限り、原則として、スライディングウィンドウ(短時間フーリエ変換、またはSTFT)を使用して、準リアルタイムで高速フーリエ変換を計算することができます。離散ウェーブレット変換は、リアルタイムEEG電力推定にも使用されることがあります。アルファバンドのパワーを確認するには、元の信号またはフィルタリングされた信号のSTFTの対応する周波数ビンを確認します。

STFTの出力は、ウィンドウの長さだけ遅延します(ウィンドウ内のすべてのサンプルが到着してから、その時間ビンの電力を計算する必要があります)。しかし、例えば8kHzのサンプリングレートでウィンドウ長が512サンプルの場合、これは0.064秒の遅延に相当し、これは0.0秒にかなり近くなります!

STFT(短時間フーリエ変換)は、事実上、一度に信号のFFTの1つの「チャンク」または「時間フレーム」の計算である。多くの場合、これらのチャンクは、ウィンドウの長さが512サンプルの場合、最初のフレームの半分(256番目のサンプル)がすでに2番目のタイムラインに寄与するサンプルを処理し始め、フレーム。

重なり合ったフレームを使用する目的は、信号の正方形のスライスを取ることによって生じるアーチファクトを回避することである。 (あなたの提案するように、一度に1サンプルのパワーを計算すると、正方形のウィンドウで信号を畳み込むことになります。これは、sinc関数でシグナルの周波数表現を畳み込むことと同じです。したがって、これらのアーチファクトを低減するために、ハミング窓などの滑らかなエッジを有するスライディングウィンドウを使用することが一般的である。

ウィンドウの長さの選択は、あなたの分光 - 時間分解能に影響することに注意してください。より長いウィンドウは、より良い周波数分解能を有するが、時間分解能はより悪くなり、逆も同様である。この現象は、Gabor限界、またはHeisenberg-Gabor限界として知られています。

1
追加された

既にあなたのバターワースはアルファバンドのフィルタリングされた信号ですか?

そうであれば、パワーは各時点での信号の2乗にすぎません。
そうでない場合は、スライディングウィンドウ(yunqueが述べたようにstft)でfftを計算し、アルファバンドのパワーを合計します。

fftは(n log n)であり、かなり最適化されているので、計算は問題にならないはずです。 実際にあなたの携帯電話のDSPチップはそれをリアルタイムで実行します

0
追加された