1

この方法でMatlabでFFTを取得しました。

X=fft(t); % Take Fourier Transform
T=abs(X); % Take real parts of transform
T=T(1:n/2);

このプロットの重心周波数を見つけることに興味があります。重心周波数が次のように与えられることを理解しています。

ここに画像の説明を入力

ここで、x(n) はビン番号 n の加重周波数値または大きさを表し、f(n) はそのビンの中心周波数を表します。

ここで、f(n) はスクリプト内の T の値であると言いたくなりましたが、これらは FFT の虚数成分と実数成分の絶対値であるため、x(n) を見つける方法がわかりません。これは重み付けされた周波数であると想定されています。

4

1 に答える 1

2

あなたはそれf(n)がn番目のビンの中心周波数だと言います。これはあなたのデータとは関係ありません。それは単にサンプリング周波数の関数です:

f(n) = n * fs / N

もちろん、上記の式でこれを因数分解できます。

centroid = (fs / N) * SUM { n x(n) } / SUM { x(n) }

xコードで呼び出したように聞こえTます。

于 2011-10-26T22:51:13.053 に答える