FFTが実際にあなたに示すもの
聞こえる音は、正弦波の合計です. ファストフーリエは、その合計を分解します. つまり、それがどのように機能するか、そして60歳までのアルゴリズムがどこにも残っているのかはここにあります.
On this page
お問い合わせ
ピアノでコードを再生 — c と E を一緒に言う. あなたの耳は1つの音を聞きます. しかし、その音は2つの周波数を重ねる:261.6 Hzおよび329.6 Hz. あなたのコクレレは物理的にそれらを分けます - 異なる周波数で異なる髪の細胞が共鳴し、脳に異なる信号を送ります.
ファストフーリエ変換は同じことをしますが、髪の細胞の代わりに数字で. シグナル(時間をかけて振幅のサンプルの配列)を与え、周波数とその強度のリストを返します. それは答えます:周波数が提示されていること、そしてどのように各?
実際に幸福とは
時間の経過とともにサンプルされる信号は、各サンプルポイントの振幅の数字のリストです. 44,100 Hzの1秒記録は44,100の数字です. これらの数字は、time domain のシグナルを記述します 時間の機能として広さ.
FFT は、この値を frequency domain に変換します 頻度の機能として広さ. 同じ情報、別の表現. カルチェジアンとポーラの座標の切り替えのような:何も作成または破壊されず、再圧縮のみ.
数学コア:すべての周期信号は、異なる周波数で正弦波とコサイン波の合計として記述することができます. これは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...)でバーを生成します. 四角波が「ブジー」を鳴らす理由です 純粋なシインがいない高周波エネルギーが含まれています.
- *ホワイトノイズ**は、周囲に大幅な高さのバーを生成します. すべての頻度は等しい確率で現われます.
- 人間の声は、基本的(聴くピッチ)と定形剤を生成します 声優は声優を区別するあなたのボーカルのトラクターの形からのピークをピークにします.
最初の3つは以下です クリックします. 高さは式です、, デッサンではない:正弦は基礎で1、正方形の波丁度1/nです オッズ・ハーモニックス.
窓: なぜ端の無光沢
キャッチがあります. FFTは、信号が永遠に繰り返されると仮定します. しかし、私たちのサンプルは有限です 起動して停止します. 信号が両方のエンドポイントでゼロにならない場合、アブルプットカットオフは人工的な高周波コンテンツを作成します. これは、スペクトル漏洩と呼ばれます.
修正: 信号を 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の高速変換とアプリケーション*. プレンティス・ホール.
- クーリー、J.W. & トゥキー, J.W. (1965). 複雑なフォーイヤーシリーズの機械計算のためのアルゴリズム. 計算の数学、19(90)、297-301.
- フーリエ、J. (1822). テオリー・アナリティー・デ・ラ・チャール. パリ:フィリン・ディドット.
- ハリス、F.J. (1978年). ディスクリートFourierトランスフォームでHarmonic分析のためのWindowsの使用. ※IEEE*, 66(1), 51-83の実績.
- オペンハイム、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は、Hann、HammingおよびBlackmanの窓が付いているCooley-Tukeyの半径x-2の実装、プラスのローパスおよびハイパス フィルターです. pinepaper.studio/editorで無料でお試しください.
Ready to create?
Start making animated GIFs, videos, and graphics — free, no signup.
Open PinePaper Editor