フーリエ変換

Fourier Transform

初級(大学1-2年レベル)

概要

フーリエ変換(Fourier Transform)は、時間領域または空間領域の関数を周波数領域の関数に変換する数学的操作であり、信号処理・画像処理・物理学・工学において最も重要な解析手法の一つである。Joseph Fourier (1768–1830) による熱伝導の研究に端を発し、現代科学技術の基盤となっている。

フーリエ変換により、複雑な波形を単純な正弦波・余弦波の重ね合わせとして表現でき、信号の周波数成分を明示的に抽出できる。これは音響解析、画像圧縮、通信システム、量子力学など、あらゆる分野で応用される。

有限の長さをもつ信号の波形と、その連続的な振幅スペクトル。各周波数成分が幅をもった山として現れる様子を示す図
図 1: 有限の長さをもつ信号(左)と、その連続スペクトル(右)。有限時間だけ続く信号では、各周波数成分が幅をもった山(連続的な帯)として現れる(無限に続く純粋な正弦波なら、線スペクトル=デルタ関数になる)。これは、周期信号のフーリエ級数がもつ離散的な線スペクトルとも対照的である。

定義

定義:フーリエ変換

関数 $f(t)$ のフーリエ変換 $\hat{f}(\omega)$ は

$$\hat{f}(\omega) = \mathcal{F}[f(t)](\omega) = \displaystyle\int_{-\infty}^{\infty} f(t) e^{-i\omega t} \, dt$$
ここで:

  • $\hat{f}(\omega)$: $f(t)$ のフーリエ変換($F(\omega)$ と書くこともあるが、本記事では $\hat{f}(\omega)$ で統一する)
  • $t$: 時間変数(または空間変数)
  • $\omega$: 角周波数 [rad/s]($\omega = 2\pi\nu$、$\nu$ は通常の周波数 [Hz])
  • $i = \sqrt{-1}$: 虚数単位
  • $\mathcal{F}$: フーリエ変換を表す記号(関数 $f$ に作用させて変換 $\hat{f}$ を与える操作)

なぜ積分するだけで周波数が分かるのか

フーリエ変換は、$e^{-i\omega t}$ という「周波数 $\omega$ のものさし」を信号に掛けて積分する操作である。信号に周波数 $\omega_0$ の成分 $e^{i\omega_0 t}$ が含まれているとき、 $$\displaystyle\int_{-\infty}^{\infty} e^{i\omega_0 t}\,e^{-i\omega t}\,dt = \displaystyle\int_{-\infty}^{\infty} e^{i(\omega_0 - \omega) t}\,dt$$ は、$\omega = \omega_0$ では被積分関数が $1$ となって大きく積み上がり、$\omega \neq \omega_0$ では正と負が打ち消し合ってほとんど $0$ になる(厳密には $2\pi\,\delta(\omega - \omega_0)$)。こうしてフーリエ変換は、信号に含まれる各周波数成分の強さを「ふるい分け」る。

逆フーリエ変換

逆変換の定義

周波数領域の関数 $\hat{f}(\omega)$ から元の関数 $f(t)$ を復元する:

$$f(t) = \mathcal{F}^{-1}[\hat{f}(\omega)](t) = \dfrac{1}{2\pi} \displaystyle\int_{-\infty}^{\infty} \hat{f}(\omega) e^{i\omega t} \, d\omega$$

この逆変換が元の関数に戻るのは、$f$ が適切な条件(おおまかには絶対可積分で、なめらかさをもつこと)を満たすときである。$f$ が連続な点では $f(t)$ に戻り、不連続点では左右の極限の平均 $\dfrac{f(t^+)+f(t^-)}{2}$ に収束する。これはフーリエ級数の収束定理を変換に拡張したもので、その仕組みはディリクレ核に由来する。不連続点の近くで再構成が約9%だけ行き過ぎて消えないギブズ現象も、同じ核の振る舞いによるものである。より厳密な収束条件と $L^2$ の意味での反転(ノルム保存)は、中級のフーリエ変換の定義プランシュレルの定理で扱う。

記法の注意

フーリエ変換の定義は、正規化の係数 $1/(2\pi)$ を順変換・逆変換のどちらに置くかで分かれる。本記事では一貫して角周波数 $\omega$ を用い、置き方の違いを次の3通りで示す。

逆変換に $1/(2\pi)$ を置く(本記事の定義)

$$\begin{aligned} \hat{f}(\omega) &= \displaystyle\int_{-\infty}^{\infty} f(t)\,e^{-i\omega t}\,dt \\[2pt] f(t) &= \dfrac{1}{2\pi}\displaystyle\int_{-\infty}^{\infty} \hat{f}(\omega)\,e^{i\omega t}\,d\omega \end{aligned}$$

順変換に $1/(2\pi)$ を置く

$$\begin{aligned} \hat{f}(\omega) &= \dfrac{1}{2\pi}\displaystyle\int_{-\infty}^{\infty} f(t)\,e^{-i\omega t}\,dt \\[2pt] f(t) &= \displaystyle\int_{-\infty}^{\infty} \hat{f}(\omega)\,e^{i\omega t}\,d\omega \end{aligned}$$

両側に $1/\sqrt{2\pi}$ を置く(対称形)

$$\begin{aligned} \hat{f}(\omega) &= \dfrac{1}{\sqrt{2\pi}}\displaystyle\int_{-\infty}^{\infty} f(t)\,e^{-i\omega t}\,dt \\[2pt] f(t) &= \dfrac{1}{\sqrt{2\pi}}\displaystyle\int_{-\infty}^{\infty} \hat{f}(\omega)\,e^{i\omega t}\,d\omega \end{aligned}$$

いずれの流儀でも、順変換と逆変換の係数の積は $1/(2\pi)$ になる。なお、通常の周波数 $\nu = \omega/(2\pi)$ [Hz] を用いると $2\pi$ が指数に移って係数が不要になる流儀もあるが、本記事では角周波数 $\omega$ [rad/s] で統一する。

基本性質

線形性

$$\mathcal{F}[af(t) + bg(t)] = a\hat{f}(\omega) + b\hat{g}(\omega)$$

時間シフト

$$\mathcal{F}[f(t - t_0)] = e^{-i\omega t_0} \hat{f}(\omega)$$ (時間シフトは位相シフトとして現れる)

周波数シフト(変調定理)

$$\mathcal{F}[e^{i\omega_0 t} f(t)] = \hat{f}(\omega - \omega_0)$$ (キャリア変調の数学的表現)

スケーリング

$$\mathcal{F}[f(at)] = \dfrac{1}{|a|} \hat{f}\left(\dfrac{\omega}{a}\right)$$ (時間圧縮は周波数拡大に対応)

微分

$$\mathcal{F}\left[\dfrac{d^n f}{dt^n}\right] = (i\omega)^n \hat{f}(\omega)$$ (微分は周波数領域で多項式乗算)

積分

$$\mathcal{F}\left[\displaystyle\int_{-\infty}^{t} f(\tau) d\tau\right] = \dfrac{\hat{f}(\omega)}{i\omega} + \pi \hat{f}(0) \delta(\omega)$$

Parseval の定理(エネルギー保存)

$$\displaystyle\int_{-\infty}^{\infty} |f(t)|^2 \, dt = \dfrac{1}{2\pi} \displaystyle\int_{-\infty}^{\infty} |\hat{f}(\omega)|^2 \, d\omega$$ (時間領域のエネルギーと周波数領域のエネルギーは等しい)

畳み込み定理

畳み込み定理

時間領域の畳み込みは周波数領域の積に変換される: $$\mathcal{F}[f * g] = \hat{f}(\omega) \cdot \hat{g}(\omega)$$ ここで畳み込み $(f * g)(t) = \displaystyle\int_{-\infty}^{\infty} f(\tau) g(t - \tau) d\tau$

この定理により、畳み込み演算(線形システムの応答計算)が周波数領域では単純な乗算に帰着される。たとえば信号にフィルタを掛ける処理は、時間領域では畳み込みだが、周波数領域では各周波数成分を掛け算で増幅・減衰させるだけで済む。

双対性

$$\mathcal{F}[\hat{f}(t)] = 2\pi f(-\omega)$$

ここで $\hat{f}(t)$ は、変換 $\hat{f}(\omega)$ の変数を $t$ と読み替えて得た関数を指す。つまり、変換をもう一度施すと、元の関数が(符号反転して)戻る。

重要な変換対

矩形関数(Rectangular function)

$$f(t) = \begin{cases} 1 & (|t| < a) \\ 0 & (|t| > a) \end{cases} \quad \Leftrightarrow \quad \hat{f}(\omega) = \dfrac{2\sin(a\omega)}{\omega} = 2a \, \text{sinc}(a\omega)$$

幅 2a の矩形パルスと、そのフーリエ変換である sinc 型スペクトル 2 sin(aω)/ω。主ローブと多数のサイドローブを持つ図
図 2: 幅 $2a$ の矩形パルス(左)と、そのフーリエ変換 $2\sin(a\omega)/\omega$(右)。鋭い不連続をもつ信号は、主ローブとゆっくり減衰するサイドローブからなる広帯域のスペクトルを生む。

ガウス関数

$$f(t) = e^{-at^2} \quad \Leftrightarrow \quad \hat{f}(\omega) = \sqrt{\dfrac{\pi}{a}} e^{-\omega^2/(4a)}$$ (ガウス関数のフーリエ変換はガウス関数)

ガウス関数 e^(−at²) と、そのフーリエ変換 √(π/a)·e^(−ω²/4a)。フーリエ変換が再びガウス関数になることを示す図
図 3: ガウス関数 $e^{-at^2}$(左)と、そのフーリエ変換 $\sqrt{\pi/a}\,e^{-\omega^2/(4a)}$(右)。ガウス関数はフーリエ変換しても形が変わらず、時間幅と周波数幅は反比例する。

指数減衰

$$f(t) = e^{-a|t|} \quad (a > 0) \quad \Leftrightarrow \quad \hat{f}(\omega) = \dfrac{2a}{a^2 + \omega^2}$$ (Lorentz型)

両側指数減衰 e^(−a|t|) と、そのフーリエ変換であるローレンツ型 2a/(a²+ω²) を示す図
図 4: 両側指数減衰 $e^{-a|t|}$(左)と、そのフーリエ変換であるローレンツ型 $2a/(a^2+\omega^2)$(右)。原点で尖った信号は、裾の重い(ゆっくり減衰する)スペクトルをもつ。

デルタ関数

$$f(t) = \delta(t) \quad \Leftrightarrow \quad \hat{f}(\omega) = 1$$ (すべての周波数成分を含む)

定数関数

$$f(t) = 1 \quad \Leftrightarrow \quad \hat{f}(\omega) = 2\pi \delta(\omega)$$ (DC成分のみ)

正弦波・余弦波

$$\cos(\omega_0 t) \quad \Leftrightarrow \quad \pi[\delta(\omega - \omega_0) + \delta(\omega + \omega_0)]$$ $$\sin(\omega_0 t) \quad \Leftrightarrow \quad i\pi[\delta(\omega + \omega_0) - \delta(\omega - \omega_0)]$$

例1: 矩形パルスの周波数スペクトル

: 幅 $2a$ の矩形パルスのフーリエ変換を求めよ。

: $$f(t) = \begin{cases} 1 & (|t| < a) \\ 0 & (|t| > a) \end{cases}$$ $$\hat{f}(\omega) = \displaystyle\int_{-a}^{a} e^{-i\omega t} dt = \left[ \dfrac{e^{-i\omega t}}{-i\omega} \right]_{-a}^{a} = \dfrac{e^{-i\omega a} - e^{i\omega a}}{-i\omega} = \dfrac{2\sin(a\omega)}{\omega}$$ これは $\text{sinc}$ 関数の形をしており、主ローブと多数のサイドローブを持つ。

例2: 微分方程式への応用

: 微分方程式 $y'' + \omega_0^2 y = f(t)$ をフーリエ変換で解け。

: 両辺をフーリエ変換すると $$(i\omega)^2 \hat{y}(\omega) + \omega_0^2 \hat{y}(\omega) = \hat{f}(\omega)$$ $$\hat{y}(\omega) = \dfrac{\hat{f}(\omega)}{\omega_0^2 - \omega^2}$$ 逆変換により $g(t)$ を得る(伝達関数法)。

例3: ガウス関数の変換

: $f(t) = e^{-t^2/2}$ のフーリエ変換を求めよ。

: $$\hat{f}(\omega) = \displaystyle\int_{-\infty}^{\infty} e^{-t^2/2} e^{-i\omega t} dt$$ 指数部を平方完成: $$-\dfrac{t^2}{2} - i\omega t = -\dfrac{1}{2}(t + i\omega)^2 - \dfrac{\omega^2}{2}$$ $$\hat{f}(\omega) = e^{-\omega^2/2} \displaystyle\int_{-\infty}^{\infty} e^{-(t + i\omega)^2/2} dt = \sqrt{2\pi} e^{-\omega^2/2}$$ (ガウス積分の性質を利用。厳密には、積分路を複素軸方向へ平行移動する正当化が必要だが、結果はこの形になる)

応用

信号処理

音声・音響信号の周波数解析、スペクトログラム、フィルタ設計(ローパス、ハイパス、バンドパス)、ノイズ除去に利用される。

画像処理

2次元フーリエ変換により画像の周波数成分を解析。JPEG圧縮(離散コサイン変換)、エッジ検出、画像フィルタリングで用いられる。

通信工学

変調・復調(AM, FM, OFDM)、チャネル特性解析、等化器設計の基礎となる。

量子力学

波動関数の運動量表現は位置表現のフーリエ変換: $$\tilde{\psi}(p) = \dfrac{1}{\sqrt{2\pi\hbar}} \displaystyle\int \psi(x) e^{-ipx/\hbar} dx$$ 不確定性原理 $\Delta x \Delta p \geq \hbar/2$ はフーリエ変換の帯域幅定理から導かれる。

偏微分方程式

熱方程式、波動方程式、Schrödinger方程式の解法で、空間微分を代数化する。

光学

回折・干渉現象(Fraunhofer回折)はフーリエ変換で記述される。レンズはフーリエ変換器として機能する。

確率論・統計学

特性関数(確率分布のフーリエ変換)により、畳み込み(独立変数の和の分布)が積に変換される。

離散フーリエ変換(DFT)

実際の数値計算では、離散サンプル $\{f_n\}_{n=0}^{N-1}$ に対する離散フーリエ変換(DFT)を用いる: $$F_k = \displaystyle\sum_{n=0}^{N-1} f_n e^{-2\pi i kn/N}, \quad k = 0, 1, \ldots, N-1$$

正規化($1/N$)の流儀

連続版の $1/(2\pi)$ と同様、DFT にも係数 $1/N$ をどこに置くかという流儀がある。上の定義(順変換に係数なし)では、定数(直流)信号 $f_n = 1$ の変換が $F_0 = N$ になる。平均値や振幅をそのまま読みたい(直流の高さ $1$ を $F_0 = 1$ として得たい)場合は、順変換に $1/N$ を付ける:

$$F_k = \dfrac{1}{N}\displaystyle\sum_{n=0}^{N-1} f_n e^{-2\pi i kn/N}$$

$1/N$ は順変換・逆変換・両者に $1/\sqrt{N}$ のいずれに置いてもよく(順変換と逆変換の係数の積が $1/N$ になればよい)、NumPy など多くのライブラリは既定で逆変換側に置く。なお単位インパルス $f_n = \delta_{n,0}$ の変換は、係数なしでも全周波数で $1$(平坦)になる。

高速フーリエ変換(FFT)

DFTを $O(N \log N)$ で計算するアルゴリズム。Cooley-Tukeyアルゴリズム(1965)により実用化され、現代のデジタル信号処理の基盤となっている。

実装例

Python (NumPy/SciPy)

import numpy as np
from scipy.fft import fft, ifft, fftfreq
import matplotlib.pyplot as plt

# サンプル信号(2つの正弦波の和)
N = 1000
T = 1.0 / 800.0  # サンプリング間隔
t = np.linspace(0, N*T, N)
f = np.sin(50 * 2*np.pi*t) + 0.5*np.sin(120 * 2*np.pi*t)

# FFT
F = fft(f)
freq = fftfreq(N, T)

# パワースペクトル
power = np.abs(F)**2

# プロット
plt.figure(figsize=(12, 4))
plt.subplot(121)
plt.plot(t[:100], f[:100])
plt.title('Signal')
plt.subplot(122)
plt.plot(freq[:N//2], power[:N//2])
plt.title('Power Spectrum')
plt.show()

# 逆変換
f_reconstructed = ifft(F)
print(f"Reconstruction error: {np.max(np.abs(f - f_reconstructed)):.2e}")

MATLAB

% サンプル信号
Fs = 1000;  % サンプリング周波数
t = 0:1/Fs:1;
f = sin(2*pi*50*t) + 0.5*sin(2*pi*120*t);

% FFT
F = fft(f);
freq = (0:length(F)-1)*Fs/length(F);

% パワースペクトル
power = abs(F).^2;

% プロット
subplot(1,2,1); plot(t(1:100), f(1:100)); title('Signal');
subplot(1,2,2); plot(freq(1:end/2), power(1:end/2)); title('Power Spectrum');

発展

多次元フーリエ変換

$n$ 次元関数のフーリエ変換: $$\hat{f}(\boldsymbol{\omega}) = \displaystyle\int_{\mathbb{R}^n} f(\mathbf{x}) e^{-i \boldsymbol{\omega} \cdot \mathbf{x}} d\mathbf{x}$$ (画像処理、CTスキャンで応用)

ラプラス変換

フーリエ変換の拡張($s = \sigma + i\omega$): $$\mathcal{L}[f(t)](s) = \displaystyle\int_0^{\infty} f(t) e^{-st} dt$$ (制御理論、回路解析で標準的)

z変換

離散時間信号のラプラス変換に相当: $$F(z) = \displaystyle\sum_{n=-\infty}^{\infty} f[n] z^{-n}$$ (デジタルフィルタ設計の基礎)

ウェーブレット変換

時間と周波数の両方を局所化する変換。非定常信号の解析に有効。

一般化フーリエ級数

内積空間における正規直交基底展開の一般化として、フーリエ変換を理解できる(関数解析の観点)。

参考文献

  • Bracewell, R. N. (2000). The Fourier Transform and Its Applications (3rd ed.). McGraw-Hill.
  • Stein, E. M., & Shakarchi, R. (2003). Fourier Analysis: An Introduction. Princeton University Press.
  • Oppenheim, A. V., & Willsky, A. S. (1997). Signals and Systems (2nd ed.). Prentice Hall.
  • Brigham, E. O. (1988). The Fast Fourier Transform and Its Applications. Prentice Hall.
  • Weisstein, E. W. "Fourier Transform." From MathWorld--A Wolfram Web Resource.

よくある質問

Q. フーリエ変換とフーリエ級数の違いは何か

フーリエ級数は周期関数を離散的な周波数成分の和に分解する。フーリエ変換は非周期関数(または周期 $\to\infty$ の極限)を連続的な周波数成分の積分に分解する。$\hat{f}(\omega)=\int_{-\infty}^{\infty} f(t)e^{-i\omega t}\,dt$ が定義である。

Q. フーリエ変換の主な性質(定理)にはどのようなものがあるか

線形性・時間シフト定理(時間シフト→位相変化)・変調定理・微分定理(微分→$i\omega$ の乗算)・畳み込み定理(時間領域の畳み込み→周波数領域の積)・パーセバルの定理(エネルギー保存)が代表的である。

Q. フーリエ変換はどのような問題に使われるか

偏微分方程式(熱方程式・波動方程式)の解法・信号処理(フィルタリング・スペクトル解析)・画像処理(JPEG圧縮)・量子力学(位置と運動量の相補性)・通信工学(変調・復調)など幅広く使われる。