4 アナログとデジタル

4.1 アナログ表現とデジタル表現

自然界で観測される量は,ほとんど全てアナログデータと言っても良い.それは,時間的 に連続的に変化する.例えば,皆さんが発生する声のデータをマイクロフォンを使って電 圧に変化させて,観測すると図1のようになるかもしれない.

アナログデータをデジタルデータに変換する場合,ある等間隔2の時刻で信号を観 測する.先ほどのマイクロフォンから出てくる電圧であれば,図2 のように観測する.図中の●が観測データである.このようにデータを取り出す操作を標 本化(sampling)と呼ぶ.

時刻を等間隔で区切って観測するように,電圧も等間隔に区切る.電圧の区切る話は,次 の「量子化」で述べる.

標本化により取り出させたデータは,数値化されて保存できる.図1のよ うなアナログ量が連なった数値(数列)として,表されたことになる.このように数値の列 に情報を表現すると,コンピューターでは容易に取り扱うことができる.このようなデー タをデジタルデータと呼ぶ.

もちろん,この数列から,元のアナログ信号を再構成できなくては,意味がない.再構成 した様子を図3に示す.この図から,再構成された信号は元のデータと似て いるが,多少,波形が異なることが分かる.すなわちデータが劣化したのである.データ をデジタル化する場合,このデータの劣化は避けることができない.

図 1: 観測したアナログデータ.全ての時刻で値があり,連続に変化している.
\includegraphics[keepaspectratio, scale=0.75]{figure/analog.eps}
図 2: アナログ信号をサンプリングを行い,データをデジタル化している.等間隔 の時刻で測定した電圧が記録される.また,電圧も特定の電圧間隔で測定している.こ の電圧を記録したものがデジタルデータである.
\includegraphics[keepaspectratio, scale=0.75]{figure/sampling_AD.eps}
図 3: デジタルデータから元の信号を再構成する.
\includegraphics[keepaspectratio, scale=0.75]{figure/DA.eps}

4.2 量子化

AD変換器により,アナログデータをデジタルデータに変換することを量子化という.量子 力学で学んだように,原子の内部にある束縛された電子は連続的なエネルギーを持つこと ができず,とびとびの値(離散的な値)を持つ.このように離散的な値を持つものを総称し て量子と呼ぶ.

音声信号を10ビットで量子化することを考える.音声信号は,-5[V]〜5[V]の範囲の電圧 信号とする.10ビットなので, $ 2^{10}=1024$段階に分解できる.従って,分解能は,

$\displaystyle \frac{10}{1024-1}\simeq0.009775$ (1)

となる.したがって,0.009775[V]以下の電圧の変化はAD変換器では区別できない.

4.3 標本化定理

アナログ信号をデジタル化するとき,サンプリングを行い,電圧信号に変換する.この作 業を標本化と言う.標本化を行うとき,サンプリング間隔に気をつけいないと,元の情報 をきちんと再生できない.

サンプリング間隔が信号の周期よりも長くなると,元の信号の再生ができない.もちろん, これは直感的に理解できる.それでは,信号の周期とサンプリング間隔ではどのような関 係があるのだろうか? これはシャノン(Claude Elwood Shannon,1916-2001)によって,示 された.

サンプリング周波数$ f_s$の半分の周波数以上の周波数はきちんと再生できない.
要するに,信号の周波数がサンプリング周波数の半分以上になるとダメと言うことである. 従って,サンプリング周波数は元の信の周波数の2倍以上にしなくてはならない--とい うことである.サンプリング周波数の半分の周波数をナイキスト周波数という.

サンプリング周波数を$ f_S$としたとき,入力信号の周波数($ f_i$)がナイキスト周波数より 大きいと,その信号周波数が $ f_S−f_{i}$として標本化される.このような現象を,エイリアシング (aliasing)3と呼び,その 様子を図4に示す.この例ではサンプリング周波数が1[KHz]なのでナイキスト周波数は 0.5[kHz]になる.信号の周波数が0.6[kHz]とナイキスト周波数よりも高いので,サンプリ ング周波数と信号の周波数の差,0.4[kHz]が標本化される.実際の信号と異なるので,非 常にまずいことになる.

CDのサンプリング周波数$ f_S$=44.1[KHz]の場合,ナイキスト周波数は 22.05[kHz]である.音声信号にこのナイキスト周波数以上の信号が混じると,へんな音が 再生されることになる.そのため,信号をAD変換するときには,ローパスフィルターをつ けて,ナイキスト周波数以上の信号が混じらないようにしている.

エイリアシングには,いろいろな場面で遭遇する.蛍光灯の下で扇風機を動かし始めると きと止めるときにエイリアシングが起きる.羽がゆっくり回って見えたり,止まったり, 逆回転が見えたりする.また,テレビの中で車のタイヤの回転が同じように見えることが ある.これはすべてエイリアシングが起きている.

図 4: エイリアシングの例.点線が実際の信号(0.6[kHz])で,それを1[KHz]でサンプリ ングした.●がサンプリングの結果である.サンプリングの結果は,実線で表した0.4[kHz]の信号と 一致する.
\includegraphics[keepaspectratio, scale=1.0]{figure/aliasing0.eps}

なぜこのようなことが生じるか? 考えてみよう.いろいろな説明方法を考えたが,どれも 結構難しい.4年生のときに学習した複素フーリエ級数4を使うとどうだろうか.

サンプリングは,図5の点線の矩形波を信号に乗算していると 考える.この矩形波の幅がゼロ近づく極限5がサンプリング となる.いくら幅が狭くても,この矩形波$ g(t)$は,繰り返し波形なのでフーリエ級数 6で 表すことができるであろう.

$\displaystyle g(t)=\sum_{n=-\infty}^{\infty}C_ne^{in\omega_st}$ (2)

ここで,$ \omega_s$がサンプリングの角振動数である.標本化する信号を$ f_i(t)$とする と,標本化された信号は

$\displaystyle V(t)=f_i(t)\sum_{n=-\infty}^{\infty}C_ne^{in\omega_st}$ (3)

となる.簡単に考えるために,標本化される信号が三角関数 $ Ae^{i\omega_it}$であった場 合を考える.この場合,

$\displaystyle V(t)=Ae^{i\omega_it}\sum_{n=-\infty}^{\infty}C_ne^{in\omega_st}$ (4)

と標本化される.ここで,サンプリング周波数と信号の周波数の関係を次のように書き改 める.

$\displaystyle \omega_i=\omega_s-\omega_1$ (5)

この関係を使うと,式4

$\displaystyle V(t)$ $\displaystyle =Ae^{i\omega_it}\sum_{n=-\infty}^{\infty}C_ne^{in\omega_st}$    
  $\displaystyle =Ae^{i(\omega_s-\omega_1)t}\sum_{n=-\infty}^{\infty}C_ne^{in\omega_st}$    
  $\displaystyle =Ae^{-i\omega_1t}\sum_{n=-\infty}^{\infty}C_ne^{i(n+1)\omega_st}$    
  $\displaystyle =Ae^{-i\omega_1t}\sum_{n=-\infty}^{\infty}C_ne^{in\omega_st}$ (6)

と書き換えることができる.この結果は,サンプリング角周波数$ \omega_s$の場合,角周 波数$ \omega_i$の信号と,角周波数 $ \omega_1=\omega_s-\omega_i$の信号の見分けがつか ないと言っている.すなわち,サンプリング周波数が1[kHz]の場合,0.6[kHz]の信号は 0.4[kHz]の信号と同じと言うことである.

以上の結果から,サンプリング周波数が1[kHz]の場合,その半分の周波数(0.5[kHz])まで 再生がきちんと再生できることになる.むろん,再生した信号には0.5[kHz]以上を含んで はならない.

図 5: 実線が実際の信号で.●がサンプリングの結果である.点線の矩形がサンプ リングを取り出す関数である.
\includegraphics[keepaspectratio, scale=1.0]{figure/sampling_filter.eps}

4.4 周期周波数への分解

教科書のこのあたりの話は,計算機によるフーリエ変換と関係している.

諸君が昨年の応用解析で学習したフーリエ変換は数学だったので,関数$ f(x)$は連続的な 値であった.しかし,実際の測定量,例えば電圧など連続的に測定してそのデータが蓄え られるわけではない.連続ではなく離散的なデータとなる.これをフーリエ変換する方法 を示す.

ここでも話を簡単にするために,周期を$ 2\pi$とする.その,周期の中でN個の等間隔で データが得られたとしよう.いわゆる,サンプリングである.データが等間隔に並ぶとい うことはFFTで重要となる.ここではFFTまで,話をしない.

サンプリングで得られたデータを

$\displaystyle x_j$ $\displaystyle =\frac{2\pi}{N}j\qquad(j=0,1,2,\cdots,N-1)$ (7)

とする.この場合,サンプリング周波数は$ N/(2\pi)$,角振動数は$ N$となる.ここで得られデータを

$\displaystyle f_j=f(x_j)$ (8)

とおく.

準備ができたので,実際のフーリエ級数の式

$\displaystyle f(x)=\sum_{-\infty}^{\infty}C_ne^{inx}$ (9)

を評価することになる.しかし,ここでは測定量である$ f_j$$ x_j$はそれぞれN個であ る.従って,フーリエ係数の$ c_n$もN個しか決めることができない.そうすると 展開の基底もN個までである.その基底として

$\displaystyle \left\{1,e^{ix},e^{2ix},e^{3ix},\cdots,e^{(N-1)ix}\right\}$ (10)

をとる.周波数領域で考えると,0から始まり$ T/(N-1)$まで等間隔の周波数 で展開するのである.したがってフーリエ級数の展開式は,

$\displaystyle f(x)=\sum_{k=0}^{N-1}c_k e^{ikx}$ (11)

となる.ここで残された問題は,測定量の$ x_j$$ f_j$から$ c_k$を決め ることである.これは比較的簡単で,

$\displaystyle f_j=\sum_{k=0}^{N-1}c_k e^{ikx_j}\qquad(j=0,1,2,\cdots,N-1)$ (12)

の連立方程式を解けばよい.この式の形が分かりにくい--と言う人もいるだろう.もう少 し分かり易く書くと次のようになる.

$\displaystyle \begin{pmatrix}f_0\\ f_1\\ f_2\\ \vdots\\ f_{N-1} \end{pmatrix} =...
...} \end{pmatrix} \begin{pmatrix}c_0\\ c_1\\ c_2\\ \vdots\\ c_{N-1} \end{pmatrix}$ (13)

$ x_j$は測定量なので,この $ N \times N$は計算可能である.この連立方程式か ら,未知数であるフーリエ係数$ c_k$を決めることになる.実際の場では,連立方程式を 計算すると時間がかかるので,もっと上手に計算する.高速フーリエ変換(FFT:Fast Fourier Transform)を使う.この辺の話はおもしろく,結構勉強になるので,興味のある ものは調べてみると良い.

ここで,サンプリングで得られた$ N$個のデータから,$ N$個の周波数に分解できることが 理解できた.得られた$ N$個の周波数の振幅は大きいものもあれば,小さいものもある. 小さいものは,信号の再生に寄与が少なく,それを加算しなくても,大体もとの信号と同 じ形になる.従って,寄与の少ない信号を無視することにより,サンプリングのデータ数よ りも小さいデータ数で再生ができる.これは,データの圧縮に他ならない.


ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成19年10月20日


no counter