DFT と FFT(離散フーリエ変換)
時間波形を飛び飛びの周波数ビンに分解するのが DFT、その計算を O(N log N) に速めたのが FFT。周波数分解能 Δf=fs/N=1/Tobs はレーダーの距離・速度分解能の土台になる
一文定義
離散フーリエ変換(DFT; Discrete Fourier Transform)は、一定間隔で標本化した 点の時間波形を、含まれる周波数成分の大きさと位相に分解する変換。高速フーリエ変換(FFT; Fast Fourier Transform)は、その DFT を で計算する高速アルゴリズムで、得られる結果は DFT と同じである。
何を計算しているのか
どんな波形も、いろいろな周波数の正弦波を重ね合わせて作れる——これがフーリエの考え方。DFT はその逆で、混ざった波形を「どの周波数がどれだけ含まれているか」に分解する。
和音を思い浮かべると早い。ピアノで「ド・ミ・ソ」を同時に押すと、耳には 1 つの混ざった音が届く。DFT はこの混ざった音を、ド・ミ・ソそれぞれの強さに分けて表にする操作にあたる。時間の関数(いつ・どんな振幅か)を、周波数の関数(どの高さの成分が・どれだけか)に翻訳している。
レーダーで言えば、受信信号に含まれるビート周波数(距離)やドップラー周波数(速度)を読み取るのがこの分解である。
なぜ「ビン」になるのか — 周波数分解能
DFT は連続なスペクトルではなく、飛び飛びの周波数点で成分を返す。この 1 点 1 点を「ビン(bin, 入れ物)」と呼ぶ。理由は、入力が有限個の標本だからである。
- 標本化周波数 で 点を取ると、観測している時間は 。
- FFT は 点入力に対し 個の出力(ビン)を返す。ビンは 0 から までを等間隔に刻んだもので、その間隔が周波数分解能になる:
- 実数信号では上半分のビンは下半分の折り返し(冗長)なので、意味を持つのは (ナイキスト周波数)までの 本である。
重要なのは が観測時間だけで決まること。細かく周波数を分けたければ、長く観測する( を伸ばす)しかない。これは レーダーのドップラー の速度分解能 と同じ が効く——「観測時間が周波数(=速度)分解能を決める」というひとつの事実の別の顔である。
上半分のビンが冗長な理由(実数信号の鏡写し)
上で「意味を持つのは までの 本」と書いた。ここが分かりにくいので補う。核心は 実数の信号は、周波数の上半分と下半分が必ず鏡写しになる ことである。
FFT は 0 から 手前までを 等分した 本のビンを返す。ところが ADC で拾う電圧のような実数の信号では、必ず「ビン 」と「ビン 」が同じ大きさになる。上半分は下半分を で折り返した鏡像で、新しい情報を持たない。
なぜ鏡写しになるか。実数の余弦波は、逆向きに回る 2 つの成分でできている(オイラーの式):
つまり周波数 と が必ずペアで現れる。実数信号には「正の周波数だけ」が存在できない。そして FFT では負の周波数が上半分( 〜 )に回り込んで入るので、下半分(正)と上半分(負)が鏡像になる。
具体例で見る。、 ならビンは 。ここに実数の の波を入れると、ピークはビン 1(本物)とビン 7(、鏡像)の両方に立つ。同様に 、 がペアで、ビン 4 が折り返しの中心になる。だから独立な情報は 〜 の 本だけで、上半分は下半分の焼き直しなので捨ててよい。
これは標本化定理の裏返しでもある。 で標本化すると より上は正しく表せず下に折り返って化ける(エイリアシング、レーダーのドップラー の速度アンビギュイティ=映画の車輪と同じ)。元々 までしか意味のある周波数は載っていない。
DFT と FFT はどう違うか — なぜ FFT は速いのか
DFT は「変換の定義」、FFT は「その定義を速く計算する手順」 で、両者は別物ではない。返す答えは同じである。
DFT を定義どおり計算すると、各ビン の値は 個の標本すべてとの積和で求まる。ビンは 個あるので、全体で 回の演算が要る()。 なら約 100 万回。
FFT(Cooley–Tukey, 1965)は、 が 2 の冪のとき、標本を偶数番・奇数番の 2 組に分けると、 点 DFT が半分サイズの DFT 2 つで書けることを使う。これを再帰的に繰り返すと演算量が に落ちる。 なら約 1 万回で、同じ答えが約 100 倍速く求まる。標本数が増えるほど差は開く。
「FFT という新しい変換がある」のではなく、「DFT を賢く計算する方法が FFT」という理解が正しい。
リーケージと窓関数
DFT は暗黙に 「観測した区間がそのまま周期的に繰り返す」 と仮定している。信号の周波数がちょうどビンの位置に一致すればきれいに 1 本のビンに立つが、一致しないと区間の端で波形が不連続になり、エネルギーが周囲のビンに漏れる。これを スペクトルリーケージ と呼ぶ。
漏れの正体を掘ると、効いているのは切り取りの 「角(段差)」 である。有限区間で切ることは、無限に続く波へ窓(区間外は 0)を掛けることに等しい。時間領域の掛け算は周波数領域では畳み込みになり、観測されるスペクトルは「使った窓のスペクトルそのもの」 に置き換わる。方形の窓は両端に鋭い角(不連続)を持ち、角を表現するには高い周波数が遠くまで必要になる(矩形波が高調波の山を持つのと同じ)。この広がりが、中央の 主ローブ と裾を引く サイドローブ(=漏れ)になる。
対策が窓関数で、区間の端を滑らかに 0 へ落として(ハニング窓・ハミング窓など)角そのものを消し、サイドローブを大きく下げる。ただし端を丸めるぶん有効区間が実質狭まり、主ローブが太る。主ローブが太ると近接する 2 つの周波数の山が重なって分離しにくくなる——つまり 漏れの抑制と周波数分解能はトレードオフ である。
レーダーとのつながり
車載 FMCW レーダーの信号処理は FFT の 2 段重ねでできている。送信は周波数を掃引したチャープを短い間隔で何発も連続して撃ち、受信波を送信波と混合してビート信号を作る。処理の流れはこうなる。
- 受信ビート信号 — 各チャープごとに、目標までの往復遅延に比例したビート周波数を含む信号が得られる。
- ADC で標本化 — 各チャープの信号を A/D 変換し、「1 チャープ内の標本」×「チャープ番号」の 2 次元データに並べる。
- レンジ FFT(1 段目) — 各チャープの標本方向(高速時間)に FFT。ビート周波数がそのまま距離になり、各ビンが距離ビンになる(パルス vs FMCW の )。
- ドップラー FFT(2 段目) — 同じ距離ビンをチャープ方向(低速時間)に FFT。目標が動くとチャープごとに反射の位相が少しずつ回り、その回転の速さがドップラー周波数=速度になる。各ビンが速度ビンになる(レーダーのドップラー)。
- 距離×速度マップ — 2 段の FFT で、距離と速度の 2 次元平面(レンジドップラーマップ)ができる。CFAR や物標検出はこの平面の上で行う。
ここで「標本方向」「チャープ方向」とは、ADC 後のデータを並べた 2 次元の表 の 2 つの軸を指す。横軸は 1 チャープ内の標本番号(標本間隔 の高速時間)、縦軸はチャープ番号(チャープ周期ごとに 1 点の低速時間)である。同じ表を横方向に FFT すればレンジ FFT(距離)、縦方向に FFT すればドップラー FFT(速度) になる——掛ける「向き」を変えるだけで距離と速度が別々に出るのがミソである。高速時間の間は目標がほぼ止まって見えて距離だけが、低速時間(チャープをまたぐ)では位相が回って速度が現れる。
つまり距離分解能・速度分解能は、それぞれの FFT のビン幅そのもの。1 段目は「1 チャープの中」を、2 段目は「チャープをまたいで」見ている点が要で、同じ FFT を掛ける方向(高速時間か低速時間か)を変えるだけで距離と速度が別々に出る。FFT が分かるとレーダー処理の全体像が一気に見通せるのはこのためである。
混同されやすい概念との対比
| 観点 | DFT | FFT |
|---|---|---|
| 正体 | 変換の定義(数学) | それを速く計算するアルゴリズム |
| 返す結果 | — | DFT と同じ(数値誤差以外) |
| 演算量 | ||
| の制約 | 任意 | 基数 2 の FFT は 2 の冪が基本(混合基数で緩和) |
| 主な場面 | 定義・理論の記述 | 実装・実時間処理 |
「DFT か FFT か」で処理内容が変わるわけではない。結果は同じで、変わるのは計算の速さだけ。
II-1 答案例(600字)
離散フーリエ変換(DFT)は、一定間隔で標本化した 点の時間波形を、含まれる周波数成分の大きさと位相へ分解する変換である。標本化周波数を とすると、DFT は から を 等分した飛び飛びの周波数点(ビン)ごとに成分を返す。ビン間隔すなわち周波数分解能は ( は観測時間)で与えられ、分解能を上げるには観測時間を延ばすほかない。実信号で意味を持つのは (ナイキスト周波数)までの 本である。
DFT を定義どおり計算すると各ビンで 回の積和を要し、全体の演算量は になる。高速フーリエ変換(FFT)は、 が 2 の冪のとき標本を偶数番と奇数番に分けて半サイズの DFT へ再帰的に帰着させ、演算量を に削減するアルゴリズムである。結果は DFT と同一で、 なら約 100 倍高速になる。FFT は新しい変換ではなく DFT を速く解く手順に過ぎない。
有限区間を切り出すため、ビン周波数の整数倍でない成分はエネルギーが隣接ビンへ漏れる(スペクトルリーケージ)。窓関数で区間の端を滑らかにすると漏れは抑えられるが、分解能はやや低下する。FFT はレーダーのレンジ/ドップラー処理をはじめ、スペクトル解析全般の基盤となる。
用語メモ
本文で使った用語の平易な説明。厳密さより、本文のイメージをつかむことを優先している。
- フーリエ変換 — どんな波形も「いろいろな高さの音(周波数)の混ぜ合わせ」で表せる、という考えに基づき、混ざった波を成分ごとの強さに分ける操作。DFT はその離散版(飛び飛びの標本・飛び飛びの周波数)。
- 標本化(サンプリング) — 連続の波形を一定間隔で拾ってデジタルの数列にすること。1 秒間に拾う回数が標本化周波数 。
- 標本周波数 は何で決まるか — 車載 FMCW レーダーでは、ADC はレーダー用 MMIC(送受信 RF を集積した IC)に内蔵され、 はその ADC の設定値になる(だから「MMIC による」で正しい)。ただし値は自由でなく下限がある。測りたい最大距離が大きいほど最大ビート周波数 が上がり、ナイキスト条件 を満たす必要があるためである。つまり「最大レンジ → 最大ビート周波数 → 必要な 」で下限が、ADC の性能で上限が縛られる。
- ビン(bin) — FFT が返す飛び飛びの周波数点、その 1 個 1 個。「周波数の入れ物」。信号のエネルギーは一番近いビンに落ちる。ビンの間隔 が見分けられる最小の周波数差になる。
- 周波数分解能 — どれだけ近い 2 つの周波数を別物として分けられるか。ビン間隔と同じで、長く観測するほど細かくなる()。
- ナイキスト周波数 — 標本化周波数の半分 。これより高い周波数は正しく表せず、低い周波数に化けて見える(折り返し=エイリアシング)。だから意味のあるビンは まで。
- 演算量 — 処理にかかる手間が、データ数 に対してどう増えるかの目安。 は が 10 倍で手間が 100 倍だが、 はほぼ 10 倍で済む。FFT が実時間で使える理由。
- 主ローブ / サイドローブ — 有限区間で切ると、1 本であるはずの周波数が「山」ににじむ。中央の大きな山が主ローブ(信号の本当の周波数はこの頂点)、両脇に並ぶ小さな波がサイドローブ(=漏れ)。この山の形は「使った窓のスペクトル」そのもの。主ローブが細いほど 2 つの近い周波数を見分けやすい(分解能が良い)。
- スペクトルリーケージ — 有限の区間で切って FFT すると、ビンにぴたり乗らない成分のエネルギーが隣のビンへにじみ出る現象。窓の端の「角(段差)」が高い周波数を要求するために起きる。
- 窓関数 — 切り出した区間の端をなだらかに 0 へ落とす重み付け(ハニング窓など)。ぶつ切りを和らげてリーケージを減らす。代わりにピークが少し太る(分解能は少し悪化)。
- レンジ FFT / ドップラー FFT — FMCW レーダーで距離を出す 1 段目の FFT と、速度を出す 2 段目の FFT。距離・速度は、それぞれの FFT のビンとして現れる。
出典
- J. W. Cooley and J. W. Tukey, "An Algorithm for the Machine Calculation of Complex Fourier Series," Math. Comp. 19 (1965) 297–301
- A. V. Oppenheim and R. W. Schafer, Discrete-Time Signal Processing, 3rd ed., Pearson, 2010
更新履歴
| 版 | 日付 | 変更内容 |
|---|---|---|
| 1.0 | 2026-08-11 | 初版(ドラフト) |