· 2 min read

FFTが実際にあなたに示すもの

聞こえる音は、正弦波の合計です。 ファストフーリエは、その合計を分解します。 つまり、それがどのように機能するか、そして60歳までのアルゴリズムがどこにも残っているのかはここにあります.

お問い合わせ

ピアノでコードを再生 — C と E を一緒に言う。 あなたの耳は1つの音を聞きます。 しかし、その音は2つの周波数を重ねる:261.6 Hzおよび329.6 Hz。 あなたのコクレレは物理的にそれらを分離します - 異なる髪の細胞は、異なる周波数で共鳴し、あなたの脳に異なる信号を送ります.

ファストフーリエ変換は同じことをしますが、髪の細胞の代わりに数字で。 シグナル(時間をかけて振幅のサンプルの配列)を与え、周波数とその強度のリストを返します。 それは答えます:周波数が提示されていること、そしてどのように各?

実際に幸福とは

時間の経過とともにサンプルされる信号は、各サンプルポイントの振幅の数字のリストです。 44,100 Hzの1秒記録は44,100の数字です。 これらの数字は、time domain のシグナルを時間関数として記述します.

FFT は、周波数の関数として、周波数ドメイン — 振幅に変換します。 同じ情報、別の表現。 カルチェジアンとポーラの座標の切り替えのような:何も作成または破壊されず、再圧縮のみ.

数学コア:すべての周期信号は、異なる周波数で正弦波とコサイン波の合計として記述することができます。 これはFourierの理論(1807)です。 FFT は、その合計の係数を計算します。各周波数の頻度は、信号にどれだけの割合が計算されます.

なぜ「ファスト」

Fourierの変換を計算する海軍の方法は、 NサンプルのN2操作 1024のサンプルでは、約1億の操作です。 Cooley-Tukey アルゴリズム(1965)は、N・log2(N) に、同じ入力で約 10,000 の操作を削減します。 100倍の速度アップ。 100万サンプルの場合、スピードアップは50,000倍になります.

トリック: N 点を 2 つの N/2 点の変形に分割し、再帰的に。 これは、N が 2 の電力である必要があります。 (または 0 のパッド). 各分割は問題を半分にします。 "butterfly" 操作は半分を結合します

X[k]     = Even[k] + W · Odd[k]
X[k+N/2] = Even[k] - W · Odd[k]

Wは複雑な指数関数(複雑な平面の回転)です。 同じ2つのサブ結果は2つの出力ポイントを与えます。 アルゴリズムが「速い」という理由で、すべての計算を2回再利用します.

PinePaperの実装は、テキストブックCooley-Tukey radix-2 DIT(時間の決定)です。 JavaScriptの40行 私たちは、生徒がソースを読み、すべてのラインを理解することができるようにしたいので、ライブラリをインポートするのではなく、ゼロから書いています.

これらのバーが意味するもの

スペクトラムアナライザ - 音楽にジャンプするバー - 各バーは周波数ビンを表します。 高さは電流信号の周波数の倍率(強度)です.

  • 純粋な正弦波は、その周波数と他に1つの背の高いバーを生成します.
  • 四角波は1/nとして減少し、基本的かつすべてのオッサムニック(3rd、5th、7th...)でバーを生成します。 四角波が「ブジー」を鳴らすのは、純粋なシインがいない高周波エネルギーが含まれている理由です.
  • *ホワイトノイズ**は、周囲に大幅な高さのバーを生成します。 すべての頻度は等しい確率で現われます.
  • 人間の声は、基本的(聴くピッチ)と定形剤を生成し、声を区別するボーカルトラクトの形状から共鳴する.

窓: なぜ端の無光沢

キャッチがあります。 FFTは、信号が永遠に繰り返されると仮定します。 しかし、私たちのサンプルはfiniteです。それは始まり、停止します。 信号が両方のエンドポイントでゼロにならない場合、アブルプットカットオフは人工的な高周波コンテンツを作成します。 これは、** スペクトル漏洩**と呼ばれます.

修正: 信号を window 関数* で重なり、タッパーは円滑に端でゼロにします。 共通の窓:

  • ハン(コサインベル):良い汎用性、いくつかの周波数解像度を失う
  • Hamming:Hannと似ていますが、エッジでゼロに到達しません、少し優れたサイドローブ抑制
  • Blackman:より狭いメインローブ、より良いサイドローブ抑制、より多くの周波数解像度を失う

選択は、常に周波数の解像度(正確にあなたは周波数を識別することができます)とスペクトル漏れ(どのくらいのエネルギーが隣接するビンに繁殖)の間のトレードオフです。 完璧な窓はありません。 これは、不確実性の原則の結果です。両方の時間と周波数の任意の正確な知識を同時に持っていることはできません.

FFTライブのどこ

FFT 結果と常にやり取りします

  • MP3とAACの圧縮:オーディオを周波数ドメインに変換し、聴覚閾値の下にある周波数を破棄し、残っているものを圧縮します。 変換は、損失のオーディオ圧縮の基礎です.
  • JPEG圧縮:2Dバージョン(DCT)は8×8ピクセルブロックを周波数領域に変換し、高周波コンポーネントを定量化します。 そのため、JPEGアーティファクトがブロックとして現れます.
  • WiFiと5G: OFDMエンコーディングは、多くの周波数サブキャリアを横断してデータを分割します。 FFT は、タイムドメイン伝送と周波数ドメインのデータシンボル間で変換します.
  • MRI映像:MRIの走査器からの未加工信号は頻度スペースにあります。 逆FFTは空間イメージを再構築します。 文字通り:あなたが今まで見たすべてのMRIは、逆のFourier変換です.
  • Shazam: スペクトログラム (FFT オーバースライドウィンドウ) を計算し、ピークを抽出し、パターンをデータベースにマッチさせます。 FFTは、すべての曲を認識する最初のステップです.

ポケットに60年にわたるアルゴリズムで、1日あたり数十億回稼働しています.

お問い合わせ

お問い合わせ

PinePaperを開き、Spectrum Analyzerジェネレータを選択します。 四角波を生成します。 棒を見る — 1/n のように落ちるオッズ・ハーモニックスが見られます。 こぎり歯に切り替える — 1/n のように落ちるすべての調和が現われています。 ノイズへの切り替え — フラットスペクトラム、すべての周波数が等しい.

ウィンドウ機能を変更します。 Hannがより広いピークのコストでスペクトルを滑らかにする方法を見てください。 ブラックマンへの切り替え — ピークが狭く、サイドローブが下がります.

FFT を読んでいません。 信号を測定し、変換が何を明らかにするのか観察しています。 知識と理解の違いです.

参考文献

  • ブリガム、E.O.(1988)。 ※Fourierの高速変換とアプリケーション* プレンティス・ホール.
  • Cooley, J.W. & Tukey, J.W. (1965). 複雑なフォーイヤーシリーズの機械計算のためのアルゴリズム。 計算の数学、19(90)、297-301.
  • フーリエ, J. (1822). テオリー・アナリティー・デ・ラ・チャール パリ:フィリン・ディドット.
  • ハリス, F.J. (1978). ディスクリートFourierトランスフォームでHarmonic分析のためのWindowsの使用。 ※IEEE*, 66(1), 51-83の実績.
  • Oppenheim、A.V.&Schafer、R.W.(2009)。 ※離散時間信号処理※(第3回) プレンティスホール.
  • シャノン, C.E. (1949). ノイズの存在におけるコミュニケーション。 ※IRE*、37(1)、10-21の送信.
  • スミス, S.W. (1997). ※サイエンティストとエンジニアがデジタル信号処理のガイド* カリフォルニア技術出版.
  • 王, A., ら. (2003). 産業強度オーディオ検索アルゴリズム。 ※ISMIR 2003*の制作 (Shazamの音声指紋アルゴリズム)
  • ウォールエース、G.K.(1991)。 JPEG静止画圧縮標準。 * ACM*、34(4)、3044の通信.

PinePaperのFFTは、ハン、ハムミング、ブラックマンの窓と、ローパスとハイパスフィルタを備えたCooley-Tukeyの半径x-2の実装です。 pinepaper.studio/editorで無料でお試しください。

Ready to create?

Start making animated GIFs, videos, and graphics — free, no signup.

Open PinePaper Editor