【高速フーリエ変換(FFT)】ナイキスト周波数とサンプリング周波数の違い

この記事では、高速フーリエ変換(FFT)の公式と原理について入門者向けに紹介します。

高速フーリエ変換(FFT)の数値例

次のような周期信号f(t)を用意します。

(1) \begin{eqnarray*} f(t)=sin(2\pi f_1t)+sin(2\pi f_2t)+Noise \end{eqnarray*}

ここでf_1=10, f_2=20, Noiseは雑音とします。
次に周期信号f(t)をンプル数N=256、サンプリング周波数f_s=100でデジタルの周期信号f(n)に変換します。
そして、デジタル周期信号f(n)を離散フーリエ変換した結果は次の通りです。


右が入力信号f(n)、左が振幅スペクトル|F(k)|です。
振幅スペクトルを見ると、周波数10, 20のピークが大きいことがわかります。
これは、入力信号に周波数10と20の周波数成分が多く含まれていることを表しています。
このように、振幅スペクトルから入力信号の周波数成分を解析できます。

ただし、先程の振幅スペクトルでは、周波数が80, 90のピークも大きくなっています。
しかしこれらの結果については無視します。
その理由については次で説明します。

サンプリング周波数とナイキスト周波数

ナイキスト周波数

サンプリング周波数f_sは1秒間にサンプリングされるデータ数です。
例えば、サンプリング周波数f_sが100[Hz]ならば1秒間に100個の割合でデータを取得します。
この時、表現できる周波数の最大値をナイキスト周波数f_nといいます。

ナイキスト周波数f_nは、標本化定理よりサンプリング周波数f_sの半分となります。
つまり、ナイキスト周波数f_nは高速フーリエ変換(FFT)の結果の有効範囲を示します。

数値例の場合

先程の数値例の場合、サンプリング周波数f_s=100[Hz]なのでナイキスト周波数f_nは50[Hz]となります。
よって、振幅スペクトルの有効範囲は0~50[Hz]となります。数値例では周波数が80. 90のピークに関しては有効範囲外なので無視します。

以上のことから、高速フーリエ変換で周波数解析を正確に行うためには、入力信号の最大周波数の2倍以上のサンプリング周波数でサンプリングする必要があります。数値例では入力信号の最大周波数が20[Hz]なので、サンプリング周波数は最低でも40[Hz]にすることになります。

エイリアシング

高速フーリエ変換により得られる振幅スペクトルは、数値例のようにナイキスト周波数f_c=50を境に左右対称となります。
ここで、右半分は左半分の虚像になっています。
このように、ナイキスト周波数F_cを超える周波数成分がナイキスト周波数以下の周波数領域に折り返すように出現することを「エイリアシング」といいます。
先程も述べましたが、ナイキスト周波数を超える範囲の結果は正確ではないので無視します。

実装例・関連記事

フーリエ変換の原理に関してはこちら
フーリエ変換の原理・計算式
逆フーリエ変換の原理・計算式
離散フーリエ変換の原理・計算式
高速フーリエ変換の原理・計算式
【フーリエ変換】サンプリング周波数とナイキスト周波数の関係性・違い

シェア&フォローお願いします!