Skip to main content

離散フーリエ変換(DFT)

離散フーリエ変換(DFT: Discrete Fourier Transform)は、ディジタル信号処理で実際に使用される変換手法です。連続的な周波数を離散化することで、コンピュータでの数値計算を可能にします。

離散時間フーリエ変換の導出​

サンプル値のフーリエ変換​

まず、サンプル値信号のフーリエ変換から始めます:

サンプル値信号: xsample(t)=∑n=0∞x(nT)δ(t−nT)x_{\text{sample}}(t) = \sum_{n=0}^{\infty}x(nT)\delta(t-nT)

記号の簡略化:x(nT)→x(n)x(nT) \rightarrow x(n)

フーリエ変換の適用: F{xsample(t)}=Xsample(ω)=∫−∞∞[∑n=0∞x(n)δ(t−nT)]e−jωtdt\mathcal{F}\{x_{\text{sample}}(t)\} = X_{\text{sample}}(\omega) = \int_{-\infty}^{\infty} \left[\sum_{n=0}^{\infty}x(n)\delta(t-nT)\right]e^{-j\omega t}dt

=∑n=0∞x(n)∫−∞∞δ(t−nT)e−jωtdt= \sum_{n=0}^{\infty}x(n)\int_{-\infty}^{\infty}\delta(t-nT)e^{-j\omega t}dt

離散時間フーリエ変換(DTFT)​

デルタ関数の性質を利用すると、離散時間フーリエ変換が得られます:

順変換: X(ω)=∑n=0∞x(n)e−jωnTX(\omega) = \sum_{n=0}^{\infty}x(n)e^{-j\omega nT}

逆変換: x(n)=12π∫−π/Tπ/TX(ω)ejnωTdωx(n) = \frac{1}{2\pi}\int_{-\pi/T}^{\pi/T}X(\omega)e^{jn\omega T}d\omega

離散時間フーリエ変換の特徴
  • 時間は離散(t→nTt \rightarrow nT)
  • 周波数 −π/T<ω<π/T-\pi/T < \omega < \pi/T は連続的な実数
  • 周波数域が有限範囲に制限される(ナイキスト周波数)

DFT(離散フーリエ変換)の導出​

周波数の離散化​

離散時間フーリエ変換では周波数が連続でしたが、実際の計算では周波数も離散化する必要があります。

連続周波数範囲:

ω∈[−π/T,π/T)\omega \in [-\pi/T, \pi/T)

離散化:

ωk=2πTkN,k=−N/2,…,N/2−1\omega_k = \frac{2\pi}{T} \frac{k}{N}, \quad k = -N/2, \ldots, N/2-1

周波数 ω\omega を kk で NN 個の点に離散化します。

DFTの定義​

離散化された周波数を用いると:

X(k)=∑n=0N−1x(n)e−j2πNknX(k) = \sum_{n=0}^{N-1}x(n)e^{-j \frac{2\pi}{N} kn}

習慣的にマイナスを避けるために、k=0,…,N−1k = 0, \ldots, N-1 とすると:

ωk=2πTkN∈[0,(2π/T−2πNT)]\begin{aligned} \omega_k = \frac{2\pi}{T} \frac{k}{N} \in \left[0, (2\pi/T - \frac{2\pi}{NT})\right] \end{aligned}

回転因子を W=e−j2πNW = e^{-j\frac{2\pi}{N}} とすると:

X(k)=∑n=0N−1x(n)WknX(k) = \sum_{n=0}^{N-1}x(n)W^{kn}

これを**離散フーリエ変換(DFT: Discrete Fourier Transform)**といいます。

変数の意味
  • kk:周波数に関する変数(0からN-1)
  • nn:時間に関する変数(0からN-1)
  • NN:データ点数(サンプル数)

逆離散フーリエ変換(IDFT)​

逆離散フーリエ変換:

x(n)=F−1{X(k)}=1N∑k=0N−1X(k)W−knx(n) = \mathcal{F}^{-1}\{X(k)\} = \frac{1}{N}\sum_{k=0}^{N-1}X(k)W^{-kn}

DFTとIDFTは対の関係にあり、相互に変換可能です。

記号の統一

W=e−j2πNW = e^{-j\frac{2\pi}{N}} という記号により、DFTとIDFTの式が簡潔に表現されます。

離散フーリエ変換の性質​

DFTは多くの重要な性質を持ちます:

1. 線形性​

DFT[ax1(n)+bx2(n)]=aX1(k)+bX2(k)\text{DFT}[ax_1(n) + bx_2(n)] = aX_1(k) + bX_2(k)

2. 周期性(重要な特徴)​

複素数 WW の周期性により:

X(k+rN)=X(k)X(k + rN) = X(k)

ここで rr は任意の整数です。

周期性の重要性

DFTの結果は周期 NN を持ちます。これは離散化による本質的な性質であり、エイリアシングと密接に関連しています。

3. 対称性(重要な特徴)​

実数信号 x(n)x(n) に対して:

X(N−k)=X∗(k)X(N-k) = X^*(k)

ここで X∗(k)X^*(k) は X(k)X(k) の複素共役です。

対称性の意味

実数信号のDFTは、周波数軸に関して共役対称性を持ちます。これにより、計算量を約半分に削減できます。

4. 時間シフト​

DFT[x(n−m)]=WkmX(k)\text{DFT}[x(n-m)] = W^{km}X(k)

5. 周波数シフト​

DFT[Wmnx(n)]=X(k−m)\text{DFT}[W^{mn}x(n)] = X(k-m)

6. 畳み込み定理​

線形畳み込み: DFT[x(n)∗h(n)]=X(k)H(k)\text{DFT}[x(n) * h(n)] = X(k)H(k)

循環畳み込み: DFT[x(n)⊛h(n)]=X(k)H(k)\text{DFT}[x(n) \circledast h(n)] = X(k)H(k)

畳み込みの種類

DFTでは循環畳み込みが自然に扱われますが、線形畳み込みを計算する場合はゼロパディングなどの工夫が必要です。

計算量とFFT​

DFTの計算複雑度​

直接計算では:

  • NN 個の出力それぞれに対して NN 回の複素乗算
  • 総計算量:O(N2)O(N^2)

高速フーリエ変換(FFT)​

FFT(Fast Fourier Transform) により計算量を大幅に削減:

  • 計算量:O(Nlog⁡N)O(N \log N)
  • N=2mN = 2^m の場合に特に効率的(Radix-2 FFT)

実用的な応用​

スペクトラム解析​

DFTにより、信号の周波数成分を解析:

  • 振幅スペクトラム:∣X(k)∣|X(k)|
  • 位相スペクトラム:arg⁡(X(k))\arg(X(k))
  • パワースペクトラム:∣X(k)∣2|X(k)|^2

ディジタルフィルタリング​

畳み込み定理を利用した高速フィルタリング:

  1. 入力信号とインパルス応答をDFT
  2. 周波数領域で乗算
  3. IDFTで時間領域に戻す

画像処理​

2次元DFT(2D-DFT)による画像の周波数解析:

  • 画像圧縮(JPEG等)
  • ノイズ除去
  • エッジ検出

注意点と制限​

1. 離散化による制約​

  • 周波数分解能:Δf=fs/N\Delta f = f_s/N
  • 時間窓:有限長データによる制約

2. スペクトラム漏れ​

  • 信号の周期が観測窓と一致しない場合
  • 窓関数による軽減が必要

3. エイリアシング​

  • サンプリング定理の違反によるスペクトラムの折り返し
  • アンチエイリアシングフィルタが必要

まとめ​

離散フーリエ変換(DFT)は、ディジタル信号処理の基盤となる重要な技術です:

  1. 実用性:コンピュータで実際に計算可能な変換
  2. 効率性:FFTによる高速計算
  3. 汎用性:様々な信号処理への応用
  4. 制限事項:離散化による制約の理解が重要

次章では、離散時間システムについて学習し、DFTの応用範囲をさらに広げていきます。

次のステップ
  • 高速フーリエ変換(FFT):効率的な計算アルゴリズム
  • 窓関数:スペクトラム漏れの軽減手法
  • 離散時間システム:DFTを用いたシステム解析
  • ディジタルフィルタ設計:実際のフィルタ実装