2011-10-26 17 views
1

私はMatlabでこのようにFFTを取りました。Matlab、FFT、Centroid Frequency

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

私はこのプロットの重心頻度を見つけることに興味があります。

X(n)はビン数N、およびF(N)の加重周波数値、又は大きさを表しenter image description here

はそのビンの中心周波数を表し:私は重心freuencyが与えられることを理解します。

f(n)はスクリプトのTの値ですが、これらはFFTの虚数成分と実数成分の絶対値なので、 x(n)は重み付けされた周波数とされる。

答えて

2

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

当然のことができます
f(n) = n * fs/N 

、このうち、あなたの上式の係数:

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

xは、あなたのコード内でTと呼ばきたものであるようですね。

+0

説明していただきありがとうございます。 – Abid

+0

@オリバー・チャールズワース、Nとは何か聞いてもいいですか?信号の長さですか? – Sam

+1

@Sam - はい...... –