離散時間フーリエ変換

提供: miniwiki
移動先:案内検索

離散時間フーリエ変換: Discrete-time Fourier transformDTFT)はフーリエ変換の一種。したがって、通常時間領域の関数を周波数領域に変換する。ただし、DTFTでは元の関数は離散的でなければならない。そのような入力は連続関数の標本化によって生成される。

DTFTの周波数領域の表現は常に周期的関数である。したがって1つの周期に必要な情報が全て含まれるため、DTFTを「有限な」周波数領域への変換であるということもある。

定義

実数または複素数の離散集合 [math]x[n], \; n\in\mathbb{Z}[/math]整数)が与えられたとき、[math]x[n]\,[/math]離散時間フーリエ変換(DTFT)は次にように表される。

[math]X(\omega) = \sum_{n=-\infty}^{\infty} x[n] \,e^{-i \omega n}[/math]

標本化との関係

名称が暗に示している通り、{x[n]} は連続時間関数 [math]x(t)\,[/math] の値(標本)を表している。このときの標本化間隔を [math]T\,[/math] としたとき、各標本の採取時刻は [math]t = nT\quad[/math] であり、[math]1/T = f_s\,[/math]サンプリング周波数となる。DTFTは次の連続時間フーリエ変換の近似である。

[math] X(f) = \int_{-\infty}^\infty x(t)\cdot e^{- i 2\pi f t}\,dt [/math]

標本化定理で示されるように、次のくし型関数の変調に [math]x(nT)\,[/math] の値を使用すると見ることもできる。

[math]\Delta_T(t) = T\sum_{n=-\infty}^{\infty} \delta(t - nT) \ [/math]

その場合得られる関数のフーリエ変換は、[math]f_s \,[/math] の間隔で重ね合わせられた [math]X(f)\,[/math] のコピーの総和である。

[math]X_\mathrm{T}(f) = \sum_{k = -\infty}^{\infty} X(f - {k f_s}) [/math]

以下で示すように、これは周期関数のDTFTである。そして、ある明白な条件下で、k=0 の項はほとんど全く他の項からの歪み(折り返し雑音)が観測されない。変調されたくし型関数は次の通りである。

[math]x_\mathrm{T}(t) = T \sum_{n=-\infty}^{\infty} x(nT)\, \delta(t - n T)[/math]

したがって、

[math] X_\mathrm{T}(f)\,[/math] [math]= \int_{-\infty}^\infty \left[T \sum_{n=-\infty}^{\infty} x(nT)\, \delta(t - n T)\right] e^{- i 2\pi f t}\,dt [/math]
[math]= \sum_{n=-\infty}^{\infty} T\cdot x(nT) \int_{-\infty}^\infty \left[\delta(t - n T)\cdot e^{- i 2\pi f t}\right]\,dt [/math]
[math]= \sum_{n=-\infty}^{\infty} T\cdot x(nT) \cdot e^{- i 2\pi f n T} \,[/math]

このとき次が成り立つ。

[math]x[n] = T\cdot x(nT)\,[/math]
[math]\omega = 2\pi f T = 2\pi \left( \frac{f}{f_s}\right) \,[/math]

つまり [math]X_\mathrm{T}(f)\,[/math][math]X(\omega)\,[/math] と同じである。

ここで、[math]f\,[/math] は通常の周波数(単位時間当たりの周期数)であり、[math]f_s\,[/math] はサンプリング周波数(単位時間当たりの標本数)であるから、[math]f / f_s\,[/math] は「標本当たりの周期数」を意味する。これを正規化周波数(normalized frequency)と呼ぶ。上で定義されている [math]\omega\,[/math] も正規化周波数だが、こちらの単位は「標本当たりのラジアン」である。正規化周波数は、期間 [math]2\pi[/math] の周期を持つ関数 [math]X(\omega)[/math] で表されるという特徴がある。そのため、逆変換では [math]2\pi[/math] の期間のみを評価すればよい。

周期性

[math]x(t)\,[/math] の標本化により、そのスペクトル(DTFT)は周期的になる。通常の周波数 [math]f\,[/math](単位時間当たりの周期数)では、その周期はサンプリング周波数 [math]f_s\,[/math] である。正規化周波数 [math]f / f_s\,[/math](標本当たりの周期数)では、その周期は [math]1[/math] である。[math]\omega\,[/math](標本当たりのラジアン)では、その周期は [math]2\pi[/math] であり、[math]e^{-i \omega n}\,[/math] の周期性に直接従う。すなわち、

[math]e^{-i (\omega + 2\pi k) n} = e^{-i \omega n}\,[/math]

であり、ここで n と k は任意の整数である。したがって、

[math]X(\omega + 2\pi k) = X(\omega)\,[/math]

となる。DTFT [math]X(\omega)\,[/math] の別の表記 [math]X(e^{i \omega})\,[/math] は次の特徴がある。

  1. 周期性を強調している。
  2. DTFT とその元になっている [math]x(t)\,[/math] のフーリエ変換 [math]X(f)\,[/math](または [math]X(\omega)\,[/math])との違いを明確化する。
  3. DTFT とZ変換との関係を強調している。

ただし、実際に周波数領域の手法でDTFTを形成したとき、その類似性は不明瞭となる。したがって、下表でも使われている通り [math]X(\omega)\,[/math] の記法もよく使われている。

逆変換

以下の逆変換は離散時間のシーケンスを回復させる。

[math]x[n]\,[/math] [math]= \frac{1}{2 \pi}\int_{-\pi}^{\pi} X(\omega)\cdot e^{i \omega n} \, d \omega[/math]
[math]= T \int_{-\frac{1}{2T}}^{\frac{1}{2T}} X_T(f)\cdot e^{i 2 \pi f nT}\, df[/math]

積分区間はDTFTの一周期全体であり、これは {x[n]} の標本群がDTFTのフーリエ級数展開の係数でもあることを示している。無限区間の積分では、この変換が通常のフーリエ変換の逆変換となり、ディラックのインパルスも復元する。すなわち次のようになる。

[math]\int_{-\infty}^\infty X_T(f)\cdot e^{i 2 \pi f t}\, df \ = \ x_T(t) \ =\ \sum_{n=-\infty}^{\infty} x[n]\cdot \delta(t - n T)[/math]

有限長シーケンス

DTFTの数値的評価では、有限長のシーケンスが明らかに必要とされる。実際、長いシーケンスは矩形窓関数で修正され、次のようになる。

[math]X(\omega) = \sum_{n=0}^{L-1} x[n] \,e^{-i \omega n}\,[/math],   ここで [math]L\,[/math] は修正されたシーケンス長である。

これは、修正前のシーケンスのスペクトルの便利な近似として使われる。これによって解像度が悪くなるが、L を増やすことで改善される。

[math]X(\omega)[/math] を (2π) の一周期上に一様に分布する任意の [math](N)[/math] 個の周波数で評価するのが一般的である。

[math]\omega_k = \frac{2 \pi }{N} k\,[/math],     ここで [math]k = 0, 1, \dots, N-1 \,[/math]

これにより、次が得られる。

[math]X[k] = X(\omega_k) = \sum_{n=0}^{L-1} x[n] \,e^{-i 2 \pi \frac{k}{N} n}[/math]

[math]N \ge L\,[/math] であるとき、次のようにも表せる。

[math]X[k] = \sum_{n=0}^{N-1} x[n] \,e^{-i 2 \pi \frac{k}{N} n}[/math],   何故なら [math]n \ge L\,[/math] について [math]x[n] = 0\,[/math] と定義するため。

このように変形すると、[math]X[k]\,[/math] のシーケンスは離散フーリエ変換(DFT)となる。[math]N[/math] はDTFTを標本化する際の解像度と定義され、[math]L[/math] はDTFT自体の固有解像度である。したがって、通常これらはほぼ同じ値である。[math]N \gt L[/math] を選択するのが一般的だが、値がゼロの項を総和に含める理由は、DFTを計算する高速フーリエ変換アルゴリズムを利用できるためである。そのことを強調する場合、「ゼロパディングDFT」あるいは「内挿DFT」と呼ぶ。しかし、値がゼロの項を使わずに単純に計算しても全く同じDFTが得られる。[math]N \lt L[/math] の場合のDTFTも計算でき、その場合はDFTとは等価ではない。

[math]N \gt L[/math] が一般的であることを示すため、次のシーケンスを考える。

[math]x[n] = e^{i 2\pi \frac{1}{8} n}[/math], ここで [math]L=64[/math]

下に示した2つの図は、ラベルで示される通り、異なるサイズのDFTを図示したものである。どちらの場合も支配的な周波数成分は [math]f = \begin{matrix} \frac{1}{8}\end{matrix} = 0.125\,[/math] である。右の図に表れているパターンは、[math]L=64[/math] の矩形窓関数のスペクトル漏れである。左側の図がこのようになっているのは、右の図のゼロと交差している点と標本化した点が重なっている結果である。これは、有限長シーケンスのDTFTというよりも、無限に続く正弦波のような印象を与える。このような図になる原因は、矩形窓関数の使用と、64個の標本あたり8個という整数個の周期になるような周波数を選択しているためである([math]\begin{matrix} \frac{1}{8}\end{matrix} = \begin{matrix} \frac{8}{64}\end{matrix}[/math])。

ファイル:No-zeropad.png
L = 64 および N = 64 についての DFT
ファイル:Zeropad.png
L = 64 および N = 256 についての DFT

他のフーリエ変換との違い

基本的にDTFTはフーリエ級数の逆であり、後者は継続的だが、周期的入力と離散スペクトルを持っている。これら2つの変換の応用は全く異なる。

DFT と DTFT は、標準の連続フーリエ変換を離散的データに適用しようとして自然に生まれたと見ることもできる。そういった観点では、単に入力形式が異なるだけで、変換そのものは同じである。

  • 入力が離散的なら、フーリエ変換は DTFT となる。
  • 入力が周期的なら、フーリエ変換はフーリエ級数となる。
  • 入力が離散的かつ周期的なら、フーリエ変換は DFT となる。

Z変換との関係

DTFT はZ変換の特殊ケースである。両側Z変換は次のように定義される。

[math]X(z) = \sum_{n=-\infty}^{\infty} x[n] \,z^{-n}[/math]

DTFT は [math]z = e^{i \omega}\,[/math] の場合である。このとき [math]|e^{i \omega}| = 1\,[/math] なので、これは複素平面での単位円付近でのZ変換の評価である。

離散時間フーリエ変換表

下表は典型的な変換を示したものである。

  • [math]n \![/math] は離散時間領域(標本)を表現する整数である。
  • [math]\omega \![/math][math](-\pi,\ \pi)[/math] の範囲内の実数であり、連続角周波数(標本当たりのラジアン)を表す。
    • それ以外 [math](|\omega| \gt \pi \,)[/math] の変換は、[math]X(\omega + 2\pi k) = X(\omega)\,[/math] で定義される。
  • [math]u[n] \![/math] は離散時間単位ステップ関数である。
  • [math]\operatorname{sinc}(t) \![/math] は正規化Sinc関数である。
  • [math]\delta (\omega) \![/math]ディラックのデルタ関数である。
  • [math]\delta [n] \![/math]クロネッカーのデルタ [math]\delta_{n,0} \![/math] である。
  • [math] \operatorname{rect}(t) [/math] は、任意の実数値 t に関する次のような矩形関数である。
    • [math]\mathrm{rect}(t) = \sqcap(t) = \begin{cases} 0 & \mbox{if } |t| \gt \frac{1}{2} \\[3pt] \frac{1}{2} & \mbox{if } |t| = \frac{1}{2} \\[3pt] 1 & \mbox{if } |t| \lt \frac{1}{2} \end{cases} [/math]
  • [math]\operatorname{tri}(t) [/math] は任意の実数値 t に関する次のような三角形関数である。
    • [math]\operatorname{tri}(t) = \and (t) = \begin{cases} 1 + t; & - 1 \leq t \leq 0 \\ 1 - t; & 0 \lt t \leq 1 \\ 0 & \mbox{otherwise} \end{cases} [/math]
時間領域
[math] x[n] \, [/math]
周波数領域
[math] X(\omega) \, [/math]
備考
[math]\delta [n] \![/math] [math]1 \![/math]
[math]\delta [n - M] \![/math] [math]e^{-i \omega M} \![/math] M は整数
[math]\sum_{m = -\infty}^{\infty} \delta[n - M m] \,[/math] [math]\sum_{m = -\infty}^{\infty} e^{-i \omega M m} = \frac{1}{M}\sum_{k = -\infty}^{\infty} \delta \left( \frac{\omega}{2\pi} - \frac{k}{M} \right) \,[/math] M は整数
[math]u[n]\![/math] [math]\frac{1}{1-e^{-i \omega}} \![/math]
[math]e^{-ian} \![/math] [math] 2\pi \delta (\omega + a) \, [/math] a は実数
[math]\cos (a n) \![/math] [math]\pi \left[ \delta (\omega - a) + \delta (\omega + a) \right][/math] a は実数
[math]\sin (a n) \![/math] [math]\frac{\pi}{i} \left[ \delta (\omega - a) - \delta ( \omega + a) \right][/math] a は実数
[math] \mathrm{rect} \left[ { ( n - M/2 ) \over M } \right] [/math] [math] { \sin[ \omega (M+1) / 2 ] \over \sin( \omega / 2 ) } \, e^{ -i \omega M / 2 }[/math] M は整数
[math]\operatorname{sinc} [(a + n)][/math] [math]e^{i a \omega} \![/math] a は実数
[math]W\cdot \operatorname{sinc}^2(W n)\,[/math] [math]\operatorname{tri} \left( { \omega \over 2\pi W } \right)[/math] real number W
[math]0 \lt W \le 0.5[/math]
[math]W\cdot \operatorname{sinc} [ W (n + a)][/math] [math]\operatorname{rect} \left( { \omega \over 2\pi W } \right) \cdot e^{j a \omega}[/math] W, a は実数
[math]0 \lt W \le 1[/math]
[math] \begin{cases} 0 & n=0 \\ \frac{(-1)^n}{n} & \mbox{elsewhere} \end{cases} [/math] [math]j \omega[/math] 微分回路フィルタとして機能する
[math]\frac{W}{(n + a)} \left\{ \cos [ \pi W (n+a)] - \operatorname{sinc} [ W (n+a)] \right\}[/math] [math]j \omega \cdot \operatorname{rect} \left( { \omega \over \pi W } \right) e^{j a \omega}[/math] W,a は実数
[math]0 \lt W \le 1[/math]
[math]\frac{1}{\pi n^2} [(-1)^n - 1][/math] [math]| \omega | \![/math]
[math] \begin{cases} 0; & n \mbox{ odd} \\ \frac{2}{\pi n} ; & n \mbox{ even} \end{cases} [/math] [math] \begin{cases} j & \omega \lt 0 \\ 0 & \omega = 0 \\ -j & \omega \gt 0 \end{cases} [/math] ヒルベルト変換
[math]\frac{C (A + B)}{2 \pi} \cdot \operatorname{sinc} \left[ \frac{A - B}{2\pi} n \right] \cdot \operatorname{sinc} \left[ \frac{A + B}{2\pi} n \right][/math] 250px A, B は実数
C は複素数

特性

以下の表は、一般的な離散時間フーリエ変換を示したものである。以下のような記法を用いている。

  • [math]*\![/math] は、2つの信号の畳み込みを意味する。
  • [math]x[n]^*\![/math] は、関数 x[n]複素共役である。
  • [math]\rho_{xy} [n]\![/math] は、 x[n]y[n]相関を表す。

最初の列は属性の説明、第二列は時間領域での関数表現、第三列は周波数領域でのスペクトル表現である。

特性 時間領域 [math]x[n] \![/math] 周波数領域 [math]X(\omega) \![/math] 備考
線形性 [math]a x[n] + b y[n] \![/math] [math] a X(e^{i \omega}) + b Y(e^{i \omega}) \![/math]
時間におけるシフト [math]x[n - k] \![/math] [math]X(e^{i \omega}) e^{-i \omega k} \![/math] k は整数
周波数におけるシフト(変調) [math]x[n]e^{ian} \![/math] [math]X(e^{i (\omega-a)}) \![/math] a は実数
時間逆転 [math]x[- n] \![/math] [math]X(e^{-i \omega}) \![/math]
時間共役 [math]x[n]^* \![/math] [math]X(e^{-i \omega})^* \![/math]
時間逆転と共役 [math]x[-n]^* \![/math] [math]X(e^{i \omega})^* \![/math]
周波数における微分 [math]\frac{n}{i} x[n] \![/math] [math]\frac{d X(e^{i \omega})}{d \omega} \![/math]
周波数における積分 [math]\frac{i}{n} x[n] \![/math] [math]\int_{-\pi}^{\omega} X(e^{i \vartheta}) d \vartheta \![/math]
時間における畳み込み [math]x[n] * y[n] \![/math] [math]X(e^{i \omega}) \cdot Y(e^{i \omega}) \![/math]
時間における乗算 [math]x[n] \cdot y[n] \![/math] [math]\frac{1}{2 \pi} X(e^{i \omega}) * Y(e^{i \omega}) \![/math]
相関 [math]\rho_{xy} [n] = x[-n]^* * y[n] \![/math] [math]R_{xy} (\omega) = X(e^{i \omega})^* \cdot Y(e^{i \omega}) \![/math]

対称性

フーリエ変換は、実数成分と虚数成分に分離できる。

[math]X(e^{i \omega}) = X_R(e^{i \omega}) + iX_I(e^{i \omega}) \![/math]

また、偶数成分と奇数成分に分離できる。

[math]X(e^{i \omega}) = X_E(e^{i \omega}) + X_O(e^{i \omega}) \![/math]

時間領域
[math]x[n] \![/math]
周波数領域
[math]X(e^{i \omega}) \![/math]
[math]x^*[n]\![/math] [math]X^*(e^{-i \omega}) \![/math]
[math]x^*[-n]\![/math] [math]X^*(e^{i \omega}) \![/math]

参考文献

  • Alan V. Oppenheim and Ronald W. Schafer (1999年). Discrete-Time Signal Processing, 2nd Edition, Prentice Hall Signal Processing Series. ISBN 0-13-754920-2. 
  • William McC. Siebert (1986年). Circuits, Signals, and Systems. MIT Electrical Engineering and Computer Science Series. Cambridge, MA: MIT Press. 
  • Boaz Porat. A Course in Digital Signal Processing. John Wiley and Sons, pp. 27-29 and 104-105. ISBN 0-471-14961-6. 

テンプレート:デジタル信号処理