- フーリエ変換〜DTFT〜DFTのつながりを整理する.
- サンプリングデータから,元の連続信号のスペクトルを得るにはどうすればよいか,という視点で考える.
- DFTと元の連続信号のフーリエ変換はどういう関係にあるのか?
- サンプリング信号は,どうしてインパルス列で定義するのか?
【関連記事】
アナログ信号のフーリエ変換(スペクトル)を求めたい!
我々が解析したい,実世界のデータはアナログ(連続)信号です.しかし,全ての時間で信号のデータを取得するのは不可能で,一定時間ごとにデータをサンプリングすることになります.こうして得た離散的なデータから,「元のアナログ信号のフーリエ変換(スペクトル)」を求めるにはどうしたら良いでしょうか?
サンプリングデータが無限個の場合
元のアナログ信号$g(t)$をサンプリング周期$T_{\mathrm{s}}$で「無限個」サンプリングしたデータ列$\{g(k T_{\mathrm{s}})\}_{k=-\infty}^{\infty}$を考えます.ここで,サンプリングデータを基につくった「連続」信号
g_{\mathrm{s}} (t)
&= \sum_{k=-\infty}^{\infty} g(k T_{\mathrm{s}}) \delta(t - kT_{\mathrm{s}}) \\
&=g(t) \sum_{k=-\infty}^{\infty} \delta(t - kT_{\mathrm{s}})
\end{aligned}
& G_{\mathrm{s}} (f) = \mathcal{F}[g_{\mathrm{s}}] (f) \\
&= \int_{-\infty}^{\infty} \underbrace{g_{\mathrm{s}}(t)}_{\mathrlap{\displaystyle = \sum_{k=-\infty}^{\infty} g(k T_{\mathrm{s}}) \delta(t - kT_{\mathrm{s}})}} e^{-i 2\pi f t} \,\mathrm{d} t \\
&= \sum_{k=-\infty}^{\infty} g(k T_{\mathrm{s}}) e^{-i 2\pi f k T_{\mathrm{s}}}
\end{aligned}
&G_{\mathrm{s}} (f) = \mathcal{F}[g_{\mathrm{s}}] (f) \\
&=G(f) \otimes \underbrace{\mathcal{F}\Biggl[\sum_{k=-\infty}^{\infty} \delta(t - kT_{\mathrm{s}}) \Biggr] (f)}_{\!\!\! \mathrlap{\displaystyle = \frac{1}{T_{\mathrm{s}}} \sum_{n=-\infty}^{\infty} \delta (f - n/T_{\mathrm{s}}) }} \\
&=\int_{-\infty}^{\infty} g(\phi) \cdot \frac{1}{T_{\mathrm{s}}} \sum_{n=-\infty}^{\infty} \delta (f - n/T_{\mathrm{s}} - \phi) \, \mathrm{d}\phi\\
&= \frac{1}{T_{\mathrm{s}}} \sum_{n=-\infty}^{\infty} G (f - n f_{\mathrm{s}} )
\end{aligned}
よって,サンプリングデータから$g_{\mathrm{s}}$をつくってフーリエ変換すれば,もとのアナログ信号$g$のフーリエ変換$G$を周期$f_{s}$で平行移動させながら足し合わせた$G_{\mathrm{s}}$を得られます.これを上手く使って,$G(f)$を求められないでしょうか?
もし,$G(f)$が限られた範囲でだけゼロでない値をとる場合には,$f_{s}$を十分大きく取ることで上式の各項の和が重ならないようにでき,$G_{\mathrm{s}}$から$G$を求められます.具体的には,
\begin{cases}
\, G(f) \neq 0 & (|f| < w / 2) \\
\, G(f) = 0 & (|f| \geq w / 2)
\end{cases}
\end{aligned}
サンプリングデータが有限個の場合
現実的には,無限回サンプリングすることはできず,有限個($N$個)のサンプリングデータ$\{g(k T_{\mathrm{s}})\}_{k=0}^{N - 1}$を扱う必要があります.そこで,サンプリングデータが有限個の場合の議論を,無限個の場合の議論に帰着させることを考えます.アナログ信号$g$に矩形窓
w (t) &=
\begin{cases}
\, 1 & (0 \leq t \leq (N - 1) T_{\mathrm{s}} ) \\
\, 0 & (\mathrm{otherwise})
\end{cases} \\
&=\mathrm{rect} \bigl(t - (N - 1) T_{\mathrm{s}} / 2 \bigr)
\end{aligned}
h_{\mathrm{s}} (t)
&= \sum_{k=-\infty}^{\infty} w(k T_{\mathrm{s}}) g(k T_{\mathrm{s}}) \delta(t - kT_{\mathrm{s}}) = w(t) g_{\mathrm{s}} (t) \\
&= \sum_{k=0}^{N - 1} g(k T_{\mathrm{s}}) \delta(t - kT_{\mathrm{s}})
\end{aligned}
そこで,
- $h_{\mathrm{s}}$のフーリエ変換$H_{\mathrm{s}}$がどのような式で表されるのか
- $H_{\mathrm{s}}$は$g$の連続フーリエ変換$G = \mathcal{F}[g]$とどのような関係にあるのか
DFT
まず,$H_{\mathrm{s}}$がどのような式で表されるのかを調べます.$h_{\mathrm{s}}$の連続フーリエ変換は
& H_{\mathrm{s}} (f) = \mathcal{F}[h_{\mathrm{s}}] (f) \\
&= \int_{-\infty}^{\infty} h_{\mathrm{s}}(t) e^{-i 2\pi f t} \,\mathrm{d} t \\
&= \sum_{k=0}^{N - 1} g(k T_{\mathrm{s}}) e^{-i 2\pi f k T_{\mathrm{s}}}
\end{aligned}
$H_{\mathrm{s}} (f)$は$f$に関する連続信号なので,やはり現実では扱うことができません.計算できるのは有限個の$f$の値だけです.そこで,$t$と同様に$f$も離散化することを考えます.上の表式から,$H_{\mathrm{s}} (f)$は$f_{\mathrm{s}}$を基本周期とする周期関数なので,$[0, f_{\mathrm{s}}]$を$N$等分して
H_{\mathrm{s}} (n f_{\mathrm{s}} / N) = \sum_{k=0}^{N - 1} g(k T_{\mathrm{s}}) e^{-i 2\pi n k / N} \\
(n = 0,...,N-1)
\end{aligned}
DFTの関係式については以下の記事にまとめています.
離散フーリエ変換(DFT) - Notes_JP
連続フーリエ変換との関係
まず,$H_{\mathrm{s}} (f)$と$G (f) $の関係を調べます.すでに,連続フーリエ変換$G (f) = \mathcal{F}[g] (f) $とDTFT $G_{\mathrm{s}} (f) = \mathcal{F}[g_{\mathrm{s}}] (f) $との間の関係を調べました.したがって,$H_{\mathrm{s}} (f) = \mathcal{F}[h_{\mathrm{s}}] (f)$と$G_{\mathrm{s}} (f) = \mathcal{F}[g_{\mathrm{s}}] (f) $との関係がわかれば,$H_{\mathrm{s}} (f)$と$G (f) $との関係がわかります.
$h_{\mathrm{s}} (t)$は
h_{\mathrm{s}} (t)
= w(t) g_{\mathrm{s}} (t)
\end{aligned}
& H_{\mathrm{s}} (f) = \mathcal{F}[h_{\mathrm{s}}] (f) \\
&= \mathcal{F}[w] (f) \otimes \underbrace{\mathcal{F}[g_{\mathrm{s}}] (f) }_{=G_{\mathrm{s}}(f)}
\end{aligned}
DFTは,これをサンプリングしたものでした.したがって,DFTで得られるのは$G_{\mathrm{s}} (f) = \mathcal{F}[g_{\mathrm{s}}] (f) $そのものではなく,矩形窓関数のフーリエ変換
\mathcal{F}[w] (f)
&=\mathcal{F}[\mathrm{rect} \bigl(t - (N - 1) T_{\mathrm{s}} / 2 \bigr)] (f) \\
&=\mathcal{F}[\mathrm{rect} (t)] (f)
\cdot \exp[-i2\pi f (N - 1) T_{\mathrm{s}} / 2] \\
&= \mathrm{sinc}(f) \exp[-i\pi f (N - 1) T_{\mathrm{s}}]
\end{aligned}
窓関数
ここまでは,窓関数に「矩形窓」w (t) &=
\begin{cases}
\, 1 & (0 \leq t \leq (N - 1) T_{\mathrm{s}} ) \\
\, 0 & (\mathrm{otherwise})
\end{cases} \\
&=\mathrm{rect} \bigl(t - (N - 1) T_{\mathrm{s}} / 2 \bigr)
\end{aligned}
しかし,よく考えてみれば,有限個のデータを扱うために必要な条件は,DTFTが有限和で切れることです.つまり,
\begin{cases}
\, w (t) \neq 1 & (0 \leq t \leq (N - 1) T_{\mathrm{s}} ) \\
\, w (t) = 0 & (\mathrm{otherwise})
\end{cases}
\end{aligned}
窓関数 - Wikipedia
DFTで得られるのは,サンプリングデータに窓関数を掛けた
h_{\mathrm{s}} (t)
&= w(t) g_{\mathrm{s}} (t)
\end{aligned}
& H_{\mathrm{s}} (f) = \mathcal{F}[h_{\mathrm{s}}] (f) \\
&= \mathcal{F}[w] (f) \otimes \mathcal{F}[g_{\mathrm{s}}] (f)
\end{aligned}
(G_{1} \otimes G_{2}) (f)
&= \int_{-\infty}^{\infty} G_{1}(\phi) G_{2}(f-\phi) \,\mathrm{d} \phi
\end{aligned}
この式は,DFTの枠組みで表現することもできます.まず,
h_{\mathrm{s}} (t)
&= \sum_{k=-\infty}^{\infty} w(k T_{\mathrm{s}}) g(k T_{\mathrm{s}}) \delta(t - kT_{\mathrm{s}}) = w(t) g_{\mathrm{s}} (t) \\
&= \sum_{k=0}^{N - 1} w(k T_{\mathrm{s}}) g(k T_{\mathrm{s}}) \delta(t - kT_{\mathrm{s}})
\end{aligned}
H_{\mathrm{s}} (n f_{\mathrm{s}} / N) = \sum_{k=0}^{N - 1} w(k T_{\mathrm{s}}) g(k T_{\mathrm{s}}) e^{-i 2\pi n k / N} \\
(n = 0,...,N-1)
\end{aligned}
& H_{\mathrm{s}} (n f_{\mathrm{s}} / N) \\
& = \frac{1}{N} \bigl(\mathcal{F}_{\mathrm{DFT}}[w] \otimes \mathcal{F}_{\mathrm{DFT}}[g] \bigr) (n f_{\mathrm{s}} / N)
\end{aligned}
(G_{1} \otimes G_{2}) (n)
&=\sum_{m = 0}^{N-1} G_{1}(m) G_{2}(n - m)
\end{aligned}
まとめ
アナログ信号$g(t)$の連続フーリエ変換$G(f)$を知りたいとします.ただし,フィルタをかけるなどして\begin{cases}
\, G(f) \neq 0 & (|f| < w / 2) \\
\, G(f) = 0 & (|f| \geq w / 2)
\end{cases}
\end{aligned}
仮に,サンプリング周期$T_{\mathrm{s}}$(サンプリング周波数$f_{\mathrm{s}} = 1/T_{\mathrm{s}}$)の無限個のデータ$\{g(k T_{\mathrm{s}})\}_{k=-\infty}^{\infty}$からつくった信号
g_{\mathrm{s}} (t)
&= \sum_{k=-\infty}^{\infty} g(k T_{\mathrm{s}}) \delta(t - kT_{\mathrm{s}})
\end{aligned}
&G_{\mathrm{s}} (f)
&= \frac{1}{T_{\mathrm{s}}} \sum_{n=-\infty}^{\infty} G (f - n f_{\mathrm{s}} )
\end{aligned}
しかし,現実で得られるのは有限個のデータ$\{g(k T_{\mathrm{s}})\}_{k=0}^{N - 1}$だけです.そこで,
\begin{cases}
\, w (t) \neq 1 & (0 \leq t \leq (N - 1) T_{\mathrm{s}} ) \\
\, w (t) = 0 & (\mathrm{otherwise})
\end{cases}
\end{aligned}
h_{\mathrm{s}} (t)
& =w(t) g_{\mathrm{s}} (t) \\
&= \sum_{k=0}^{N - 1} w(k T_{\mathrm{s}}) g(k T_{\mathrm{s}}) \delta(t - kT_{\mathrm{s}})
\end{aligned}
H_{\mathrm{s}} (n f_{\mathrm{s}} / N)
= \sum_{k=0}^{N - 1} w(k T_{\mathrm{s}}) g(k T_{\mathrm{s}}) e^{-i 2\pi n k / N} \\
(n = 0,...,N-1)
\end{aligned}
さらに,
& H_{\mathrm{s}} (f) = \mathcal{F}[h_{\mathrm{s}}] (f) \\
&= \mathcal{F}[w] (f) \otimes G_{\mathrm{s}} (f)
\end{aligned}
参考文献
- [1] 信号とシステム (斉藤洋一):6. アナログ信号のディジタル化,7.3. 信号のスペクトル解析