離散フーリエ変換 (Discrete Fourier Transform, DFT) を用いると、 周波数領域で信号処理をすることができます。 実際の計算には、離散フーリエ変換の演算量を削減した高速フーリエ変換 (Fast Fourier Transform, FFT) を用いることが多いようです。
時間領域の信号x(n)のDFTは
N-1 X(k) = Σ x(n) e-j2πnk/N (k=0,1,…,N-1) n=0で定義されます。 逆変換 (Inverse DFT, IDFT) は
N-1 x(n) =1/N Σ X(k) ej2πnk/N (n=0,1,…,N-1) k=0で定義されます。 X(k)がx(n)の周波数成分となります。 アナログ信号のスペクトルとDFT結果の対応は下図のようになります。
図からもわかるように、 X(k)には正の周波数成分と負の周波数成分との両方が含まれています。 X(0)は直流成分、 X(1), …, X(N/2-1)が正の周波数成分、 X(N/2+1, …X(N-1)が負の周波数成分になります。 負の周波数成分は、X(-1)=X(N-1), X(-2)=X(N-2), …, X(-i)=X(N-i), … と考えることもできます。 X(N/2)はサンプリング周波数fsの半分にあたる成分です。 エイリアシング が発生しない条件では、X(N/2)はゼロになっています。
アナログ信号のフーリエ変換と同様に、 実信号x(n)のDFT結果X(k)には対称性があります。 負の周波数成分X(-k)は正の周波数成分の複素共役X*(k)になります。 この性質を利用すると、 正の周波数成分だけ計算して、 負の周波数成分は正の周波数成分の複素共役とすることもできます。 対称性を満たさない処理をしてしまうと IDFT結果が実数にならないので注意してください。
N点DFTを式通りに計算するとN2回の複素乗算が必要となり、 演算量が膨大になってしまいます。 DFTの演算量を削減して高速に計算できるようにしたものがFFTです。 FFTにはいろいろな方式がありますが、 N=2Mとした基数2のFFTが広く用いられています。 複素乗算回数はN/2log2N回になります。
周波数領域における信号処理の流れは