私はデータF1、F2、O1、O2の4つの行列を持っています。すべては、1 秒間 1ms で収集された神経信号です。F1 と O1 は、F2 と O2 と同時に収集されました。収集されたデータが 2 つの試験間でどのように異なるかを調べ、各試験のコンポーネント (F1 と O1) を相互に比較して、応答の違いに気付く必要があります。MATLAB は初めてですが、fft 関数を使用する必要があると思います。どこから始めればよいかわかりません。どんな助けでも大歓迎です。
2 に答える
サンプリング レート (1 秒あたり 1000 回) に基づいて、最大 500 Hz の周波数を持つ信号のみを分析できます。より高いコンポーネントを持つ神経信号コンポーネントは、より低いコンポーネントの信号として表示されます (デバイスにハイパス フィルターなどがない限り)。
Matlab ヘルプの fft のコマンドは次のとおりです。 Y = fft(signal, n)
信号は F1 または O1 または F2 または O2 のいずれかで、長さ 1000 のベクトルである必要があります。n は、FFT のサンプル数を決定します。これは基本的に、周波数値を 0 Hz から 1000 Hz (サンプリング レート) の間でどれだけ細かく分割するかです。たとえば、n = 256 を選択すると、Y は周波数 (0*1000/256 hz、1*1000/256 hz、... 255*1000/256 hz) に対応する尺度を持つ 256 の長さのベクトルになります。 .
Y は複素数値のベクトルになります。多くの場合、信号の強度またはパワーを確認する必要があります。「abs()」を使用して大きさを見つけることができます。myPSD = abs(Y)。次に、信号は実際の信号であるため、それらの fft はサンプリング レートの約半分 (500hz) で対称です。したがって、前半だけを見る必要があります。前半部分を確認するためのコード スニペットを次に示します。
Y = fft(信号、n); %あなたのnを選択してください
myPSD = abs(Y);
myHalfPSD = myPSD(1:ceil(n/2))
myFreqValues = [0:1000/n:500-1000/n] % myHalfPSD と myFreqValues の両方の長さは n/2 にする必要があります
plot(myFreqValues, myHalfPSD)
通常、PSD は対数スケールまたは 10 進数で表示されます。したがって、行を追加することができます。
Y = fft(信号、n); %あなたのnを選択してください
myPSD = abs(Y);
myHalfPSD = myPSD(1:ceil(n/2))
myHalfDBPSD = 20*log(myHalfPSD)
myFreqValues = [0:1000/n:500-1000/n] % myHalfPSD と myFreqValues の両方の長さは n/2 にする必要があります
plot(myFreqValues, myHalfDBPSD)
一度に 4 つのグラフすべてをプロットする場合は、subplot(4,1,1)、subplot(4,1,2) などを使用することをお勧めします。
それが役立つことを願って、
チュアン
2 つの別々の取得の周波数スペクトルを比較しようとしている場合は、fft が使用するツールです。
Mathworks にはfft
関数の使用方法に関する優れたドキュメントがあり、提供されているサンプル コードにデータをカット アンド ペーストすることができます。
同じ軸にデータをプロットする場合は、hold on
コマンドを使用して、異なる線の色plot(x,y,'r')
をプロットし (例: 赤い線、'b'
青い線などをプロットします - lineseries のプロパティを参照)、凡例を含めてプロットにラベルを付けることができます.