本文へ移動
科学と技術の「いま」を、深く、やさしく読み解くサイエンスマガジン
サイエンス・イニシアティブ
サイエンス

高速フーリエ変換FFTの仕組みと身近な応用を初心者向けに徹底解説

文:相馬 悠人 約9分で読めます

スマートフォンで音楽を聴くとき、ノイズキャンセリングイヤホンで雑音が消えるとき、その裏側では「高速フーリエ変換(FFT)」という計算技術が休みなく働いています。

名前だけ聞くと難しそうですが、その本質は「複雑な波を、シンプルな波の足し算に分解する」という、とてもシンプルな発想です。

個人的に信号処理を学び始めた頃、数式の壁で挫折しかけたのですが、「音の高さを分解している」というイメージを掴んだ瞬間、一気に理解が進みました。この記事では、数式を最小限に抑えながら、FFTの仕組みと、私たちの生活のどこで使われているかを一気通貫でお伝えします。

この記事で学べること

  • FFTは「時間の波」を「周波数の成分」に分解する高速計算アルゴリズムである
  • 計算量をO(N²)からO(N log N)へ劇的に減らす「分割統治」の発想が核心にある
  • データ数1024個の場合、計算量は約100分の1まで削減される
  • 音声認識・WiFi通信・工場設備の故障診断など身近な技術を支えている
  • フーリエ変換とDFTとFFTの違いを整理すれば全体像がクリアになる

FFTとは何かを直感的に理解する

FFT(Fast Fourier Transform、高速フーリエ変換)とは、一言でいえば「複雑な波形を、含まれている周波数ごとに分解する高速な計算方法」です。

身近な例で考えてみましょう。

オーケストラの演奏を録音したとします。耳に届くのは一つの複雑な音の波ですが、その中にはバイオリンの高い音、チェロの低い音、トランペットの音などが混ざり合っています。FFTを使うと、この混ざった音の中から「どの高さの音が、どのくらいの強さで含まれているか」を取り出すことができるのです。

この「時間とともに変化する波(時間領域)」を「周波数ごとの成分(周波数領域)」に変換する作業を、数学ではフーリエ変換と呼びます。

あらゆる複雑な波は、単純な波(サインカーブ)の重ね合わせで表現できる。

フーリエ変換の基本思想

フーリエ変換とDFTとFFTの違いを整理する

FFTとは何かを直感的に理解する - 高速フーリエ変換 FFTの仕組みと身近な応用
FFTとは何かを直感的に理解する – 高速フーリエ変換 FFTの仕組みと身近な応用

ここでつまずく方がとても多いのですが、3つの言葉の関係を整理すると一気にスッキリします。

結論から言えば、FFTは「DFTを高速に計算するための工夫」であり、別物ではありません。

3つの関係性

フーリエ変換は、連続的な波(アナログ信号)を対象にした数学的な理論そのものです。

DFT(離散フーリエ変換)は、コンピュータで扱えるように、波をとびとびの数値(デジタルデータ)として計算する方法です。ただし、DFTをそのまま計算すると、データ数が増えるほど計算量が爆発的に増えてしまうという弱点があります。

FFTは、そのDFTを賢いショートカットで高速に計算するアルゴリズムです。答えはDFTとまったく同じですが、計算にかかる時間が圧倒的に短くなります。

1

フーリエ変換

連続的な波を扱う数学理論。すべての基礎となる考え方。

2

DFT

デジタルデータ向けの計算方法。ただし計算量が多い。

3

FFT

DFTを高速化した実用アルゴリズム。結果はDFTと同じ。

FFTの仕組みを数式なしで理解する

フーリエ変換とDFTとFFTの違いを整理する - 高速フーリエ変換 FFTの仕組みと身近な応用
フーリエ変換とDFTとFFTの違いを整理する – 高速フーリエ変換 FFTの仕組みと身近な応用

FFTの核心は、実はとてもエレガントな発想にあります。

それは「大きな問題を、小さな問題に分けて解く」という考え方です。

この「分けて解く」という戦略は、コンピュータ科学における困難は分割せよという分割統治法の代表的な成功例として知られています。哲学者デカルトの格言が、そのまま高速計算の原理になっているのは興味深い点です。

偶数番目と奇数番目に分ける

たとえば8個のデータをDFTで計算する場合を考えます。

普通に計算すると、8×8=64回程度のかけ算が必要です。

ここでFFTは、データを「偶数番目のグループ」と「奇数番目のグループ」の2つに分けます。それぞれ4個ずつの小さなDFTを計算し、最後にうまく組み合わせるのです。すると、同じ計算を何度も繰り返している部分をまとめられるため、計算回数が大幅に減ります。

さらに、4個のグループを2個ずつに分け、2個をまた1個ずつに分けていきます。この「半分に割り続ける」操作こそがFFTの心臓部です。だからこそ、FFTで扱うデータ数は2のべき乗(256、512、1024個など)が基本になっています。

バタフライ演算という組み立て方

分割した小さな計算結果を組み合わせるときの計算パターンは、図に描くと蝶(バタフライ)のような形になることからバタフライ演算と呼ばれます。

データが上下2本の線で交差しながら合流していく様子が、羽を広げた蝶に見えるためです。この規則正しい構造のおかげで、コンピュータは効率よく計算を進められます。

計算量がどれだけ減るのか

FFTの仕組みを数式なしで理解する - 高速フーリエ変換 FFTの仕組みと身近な応用
FFTの仕組みを数式なしで理解する – 高速フーリエ変換 FFTの仕組みと身近な応用

FFTの威力は、数字で見ると一目瞭然です。

通常のDFTの計算量はO(N²)、つまりデータ数Nの2乗に比例して増えます。一方、FFTの計算量はO(N log N)に抑えられます。

📊

データ1024個での計算回数の目安

DFT
約104万回

FFT
約1万回

データが1024個の場合、DFTでは約104万回の計算が必要ですが、FFTなら約1万回で済みます。実に約100分の1という劇的な削減です。

データが増えるほどこの差は開きます。もしFFTが存在しなければ、リアルタイムの音声処理も、動画通信も、現実的な速度では成り立たなかったでしょう。

💡 実体験から学んだこと
以前、数万点の振動データをまず自作のDFTで処理したところ、計算に数十秒かかり実用にならず焦りました。ライブラリのFFT関数に置き換えた瞬間、処理が一瞬で終わり、この計算量の差を身をもって実感したのを覚えています。

身近なところで活躍するFFT

ここからが本題とも言える「私たちの生活とのつながり」です。FFTは想像以上に幅広い場面で使われています。

音声解析と音楽アプリ

音楽プレイヤーの画面で、音に合わせて棒グラフが上下する「イコライザー」を見たことがあるでしょう。あれはFFTで音を周波数ごとに分解した結果を表示しています。

スマートスピーカーの音声認識や、カラオケの採点、ノイズキャンセリング機能も、すべて音を周波数で分析するFFTが基盤です。

無線通信とWiFi

WiFiや4G、5Gといった通信規格では、OFDMという技術が使われています。これは電波を多数の周波数に分けて同時にデータを送る方式で、その分解と合成にFFTが不可欠です。

スマートフォンで動画がスムーズに流れる裏側で、FFTが高速に働き続けているのです。

工場設備の故障診断

製造業の現場では、モーターや軸受け(ベアリング)の振動をFFTで解析し、故障の予兆を検知しています。

正常な機械と、傷んだ機械では、振動に含まれる周波数成分が異なります。この違いをFFTで捉えることで、壊れる前に部品を交換する予知保全が可能になります。日本の「ものづくり」の品質を支える縁の下の力持ちと言えるでしょう。

画像処理と医療

画像のノイズ除去やパターン検出にもFFTが使われます。写真の細かい模様やぼかしの処理は、画像を周波数の観点から扱うことで効率化できます。

医療分野では、MRI(磁気共鳴画像)の画像再構成にFFTが用いられており、体の断面画像を作り出すうえで欠かせない存在です。

FFTが支えている身近な技術




学習や実務への一歩を踏み出すには

FFTを実際に触ってみたい方には、プログラミングでの体験を強くおすすめします。

PythonのNumPyには numpy.fft という関数が用意されており、数行のコードで波形を周波数に分解できます。個人的には、まず「440Hzのサイン波」を作ってFFTにかけ、本当に440の位置にピークが立つのを目で確認する実験が、理解を深める近道だと感じています。

⚠️
FFTを使うときの注意点
データ数は2のべき乗にそろえるのが基本です。また、波形をぶつ切りにすることで生じる誤差(リーケージ)を抑えるため、実務では「窓関数」という前処理を組み合わせることが一般的です。

よくある質問

FFTとフーリエ変換は同じものですか

厳密には異なります。フーリエ変換は数学理論全体を指し、FFTはそのうちデジタルデータ向けの計算(DFT)を高速に行うアルゴリズムです。得られる結果はDFTと同じで、計算速度だけが違います。

数学が苦手でもFFTは理解できますか

はい、可能です。「複雑な波を単純な波の足し算に分解している」というイメージさえ掴めば、応用の理解には十分です。詳しい数式は、必要になった段階で少しずつ学べば問題ありません。

なぜデータ数を2のべき乗にするのですか

FFTは「半分に割る」操作を繰り返すため、2で割り切れ続ける数(256や1024など)が最も効率的だからです。半端な数でも計算できる方式はありますが、基本形は2のべき乗が扱いやすいとされています。

FFTを学ぶと何の役に立ちますか

音響、通信、画像処理、機械の診断、金融データ分析など、応用分野が非常に広いのが特徴です。理系のエンジニアにとっては、一度身につけると多くの現場で活かせる汎用的な武器になります。

実際に手を動かすには何から始めればよいですか

PythonとNumPyの環境を用意し、簡単なサイン波をFFTにかけてグラフ化するところから始めるのがおすすめです。周波数のピークが目で見える体験が、理論と実務をつなぐ最良の入り口になります。

まとめ

FFTは、複雑な波を周波数成分に分解する「高速な計算アルゴリズム」です。

その核心は、問題を半分ずつに分けて解く分割統治の発想にあり、計算量をO(N²)からO(N log N)へと劇的に削減します。この効率化があるからこそ、音声認識も無線通信も工場の予知保全も、リアルタイムで実現できているのです。

まずは「波を分解している」というイメージを持ち、余裕があれば実際にプログラムで動かしてみてください。目に見えない波の世界が、少しずつ身近に感じられるようになるはずです。

相馬 悠人

相馬 悠人サイエンス・イニシアティブ編集部

サイエンス・イニシアティブ編集長。大学院で物理学を専攻後、出版社で科学雑誌の編集に約10年携わる。専門は宇宙・物理領域。…

この執筆者の記事一覧 →
上部へスクロール