[[工学]]

*デジタル信号処理 [#p73095e4]
#contents
----
#main_google_AdSense()

**予備知識 [#e3c08db7]
-数列と級数
--数列$ \{a_0,a_1,a_2,\cdots,a_n\,\cdots\} $に対して、$ a_0+a_1+a_2+\cdots+a_n+\cdots $や$ \sum_{n=1}^{\infty}a_n $という形を級数と言う。
--数列$ \{a_0,a_1,a_2,\cdots,a_n\,\cdots} $に対して、$ a_0+a_1+a_2+\cdots+a_n+\cdots $や$ \sum_{n=1}^{\infty}a_n $という形を級数と言う。
--初項$ a $, 公比$ r $の等比数列の第n項までの部分和$ S_n $
---$ S_n = \sum_{k=0}^{n}ar^k = \frac{a(1-r^{n+1})}{1-r} $
--無限等比級数
---$ \lim_{n \to \infty}S_n = \sum_{k=0}^{\infty}ar^k = \left\{\begin{array}{cc} \frac{a}{1-r}  &   -1<r<1 \\ diverge  & otherwise \end{array} $


**離散時間システム [#l7ad7fec]
CENTER:&ref(工学/デジタル信号処理/wave_exp.png,100%);
-連続時間信号を$ x(t) $とすると間隔$ nT $の離散時間信号は$ x(nT) $となり、ディラックのデルタ関数により以下のように表現される。
--$ x(nT) = \sum_{k=-\infty}^{\infty}x(kT)\delta{(nT-kT)} $
---間隔Tは一定なので、連続時間信号と離散時間信号との区別をするために、$ T $を省略して$ x[n] $と表記する場合もある。

***線形性の必要十分条件 [#x37a9808]
-$ y(nT)=\phi{[x(nT)]} $において以下の(1)及び(2)が成り立つ場合、線形システムであると言う。
--(1) $ y(nT)=\phi{[ax(nT)]}=a\phi{[x(nT)]} $
--(2) $ y(nT)=\phi{[x_{1}(nT)+x_{2}(nT)]}=\phi{[x_{1}(nT)]}+\phi{[x_{2}(nT)]} $
---(1)及び(2)をまとめて以下のように表記することも可能~
$ y(nT)=\phi{[\sum^{}_{k}a_{k}x_{k}(nT)]}=\sum^{}_{k}a_{k}\phi{[x_{k}(nT)]} $
--つまり、あるシステムの入力信号に対しての出力信号が定数倍であり、また複数の入力信号の和に対しての出力信号と、各々の入力信号に対しての出力信号の和と等しい場合、線形システムであると言える。
---線形システムになりうる要素に、微分や積分も含まれる(ただし線形微分方程式に限る)。よって抵抗やコイル、コンデンサからなる回路は線形システムであると言える。

***時不変の必要十分条件 [#nc278283]
-$ x(nT) $に対するシステム応答が$ y(nT) $であったとき、$ kT $シフトして$ x(nT-kT) $とした場合でも、システム応答が$ y(nT-kT) $となっているとき、時不変システムと言う。

***線形時不変システム [#hb654e70]
-離散時間システムが線形性及び時不変の両方を満たす場合、線形時不変システム(linear time-invariant system:LTI system)と言う。
--$ y(nT-kT)=\phi{[x(nT-kT)]} $
-以降、扱うシステムは明記が無い限りLTIである。

***インパルス応答 [#yf7da2f6]
-単位インパルス$ \delta{(nT)} $のシステム応答をインパルス応答と言い、$ h(nT) $と表す。
--$ \delta{(nT)} = \left\{\begin{array}{cc} 1  & n = 0 \\ 0  & n \neq 0 \end{array} $
--$ y(nT)=\phi{[\delta{(nT)}]}=h(nT) $

***畳み込み和 [#hbfd4370]
-以下のような式を、$ x(nT) $と$ h(nT) $の畳み込み和(convolution sum)よる表現と言う。
--$ y(nT)=\phi{[x(nT)]}=\phi{[\sum^{\infty}_{k=-\infty}x(k)\delta{(nT-kT)}]} $~
システムの線形性を考慮すると
--$ =\sum^{\infty}_{k=-\infty}x(kT)\phi{[\delta{(nT-kT)}]} $
--$ =\sum^{\infty}_{k=-\infty}x(kT)h(nT-kT) $ (または演算子表記により$ y(nT)=x(nT)\ast{}h(nT) $)~
なお、上記式は交換法則により以下のように変形可能である。
--$ =\sum^{\infty}_{k=-\infty}h(kT)x(nT-kT) $ (または演算子表記により$ y(nT)=h(nT)\ast{}x(nT) $)

***因果的なシステム [#we3e496f]
-システムの出力$ y(n_{0}) $が入力$ x(n),n\leq{}n_{0} $のみによって決定されるとき、因果的と言う。因果的なシステムにおけるインパルス応答と、畳み込み和は以下のように表す。
--$ h(nT)=0, n<0 $
--(1) $ y(nT)=\sum^{n}_{k=-\infty}x(kT)h(nT-kT) $
-もしくは
--(2) $ y(nT)=\sum^{\infty}_{k=0}h(kT)x(nT-kT) $
---数列の和の範囲を-∞〜∞としてしまうと、例えば上記式(1)において$ y(nT) $を求める際に未来の入力信号である$ x(nT+T) $などのシステム応答も必要となる。しかし未来の信号は扱えないのでフィルタを実際に実現するにあたり、インパルス応答に関して$ h(nT)=0,n<0 $という条件を付けることにより、因果的システムとする必要がある。

***安定なシステム [#s15d8c33]
-線形時不変システムにおいて以下の式が成り立つ場合、安定なシステムと言う。
--$ \sum^{\infty}_{n=-\infty}|h(nT)|<\infty $

***線形差分方程式 [#uc1689a1]
-微分の定義の復習
--$ \frac{dy(t)}{dt} = \lim_{\Delta t \to 0} {y(t+\Delta t) - y(t) \over \Delta t} $
-上記式の微分は連続的な変化に対する定義であるが、これを離散的な変化である差分として再定義する~
--$ \frac{dy(nT)}{dt} \approx \frac{y(nT+T) - y(nT)}{T} $
-一般的にデジタル信号処理では現在の入力と過去の出力から現在の出力を得るので後方差分に置き換える~
--$ \frac{dy(nT)}{dt} \approx \frac{y(nT) - y(nT-T)}{T} $

***周波数応答 [#e71e3990]
-畳み込み和による表現は時間領域であったが、周波数応答によって周波数領域による表現が可能となる。
--あるシステムに対して離散時間の入力信号として$ x(nT)=e^{j\omega{}nT} $を与えた場合を考える。
---$ y(nT)=\sum^{\infty}_{k=-\infty}h(kT)x(nT-kT) $
---$ =e^{j\omega{}nT}\sum^{\infty}_{k=-\infty}h(kT)e^{-j\omega{}kT} $
--ここで$ H(e^{j\omega{}T}) = \sum^{\infty}_{k=-\infty}h(kT)e^{-j\omega{}kT} $を定義すると
---$ y(nT) = e^{j\omega{}nT}H(e^{j\omega{}T}) $
--となる。$ H(e^{j\omega{}T}) $を離散時間システムの周波数応答と言う。
--離散時間システムの周波数応答は複素数で表現されるので、指数関数形式及び極形式に直すことができる。
---$ H(e^{j\omega{}T}) = Re[H(e^{j\omega{}T})]+jIm[H(e^{j\omega{}T})] $
---$ = |H(e^{j\omega{}T})|e^{jargH(e^{j\omega{}T})} $
---$ = |H(e^{j\omega{}T})|\angle{argH(e^{j\omega{}T})} $
---$ argH(e^{j\omega{}T}) = \tan^{-1}{\frac{Im[H(e^{j\omega{}T})]}{Re[H(e^{j\omega{}T})]}} $
--$ |H(e^{j\omega{}T})| $を振幅特性、$ argH(e^{j\omega{}T}) $を位相特性と言う。

***離散時間フーリエ変換 [#z407fe1a]
-離散時間システムの周波数応答の式の形は、一種のフーリエ変換と考えられる。よって入力信号を$ x(nT) $として、以下のように再定義する。
--$ X(e^{j\omega{}T}) = \sum_{k=-\infty}^{\infty}x(kT)e^{-j\omega{}kT} $
--$ x(nT) = \frac{1}{2\pi}\int\nolimit_{-\frac{\pi}{T}}^{\frac{\pi}{T}}X(e^{j\omega{}T})e^{j\omega{}nT}d\omega $


**z変換 [#ffeb664c]
-z変換は離散時間信号をラプラス変換することにより、z平面でのシステムの解析を可能とする。
***z変換及び逆z変換の定義 [#q49ac5c9]
-まず、ラプラス変換をする為に入力信号として、時間領域表現の離散時間信号$ x^{\ast}(t) $を定義する。
--$ x^{\ast}(t) = \sum_{n=0}^{\infty}x(nT)\delta{(t-nT)} $
-時間領域表現とは、独立変数が連続時間tで定義されていることである。ただし、実際にtの取りうる値はあくまでも離散時間信号と同じ$ nT $であり、因果的システムを扱うので$ k=0 $とした。
-上記の離散時間信号をラプラス変換する。
--$ \mathcal{L}[x^{\ast}(t)] = X^{\ast}(s) = \sum_{n=0}^{\infty}x(nT)e^{-nsT} $
-ここで$ z = e^{sT} $とすると
--$ X(z) = \mathcal{Z}[x(nT)] = \sum_{n=0}^{\infty}x(nT)z^{-n} $
-となる。上記式をz変換と言う。数学的に言えば、これはまさしく原点中心($ \alpha=0 $)のローラン展開であり、以後、システムを解析する際に複素解析で得られた様々な公式が適用可能であることを示している。
--特に上記式を片側z変換といい、nのとりうる範囲が$ -\infty $から$ \infty $の場合、両側z変換と言う。
-また、逆z変換として以下を定義する。
--$ x(nT) = \mathcal{Z}^{-1}[X(z)] = \frac{1}{2\pi i} \oint\nolimits_{C}X(z)z^{k-1}dz $
-逆z変換の定義に従って計算を行うと複素平面において1周線積分を行う必要がある。この1周線積分を複素解析の諸定理(留数の定理)や、部分分数分解後に逆z変換表等を用いることにより、簡単に計算を行うことが可能である。

***z変換の性質 [#g3e18fff]
-線形性
--$ \mathcal{Z}[x_1(nT)] = X_1(z) $, $ \mathcal{Z}[x_2(nT)] = X_2(z) $のとき
---$ \mathcal{Z}[ax_1(nT)+bx_2(nT)] = aX_1(z)+bX_2(z) $
-時間移動
--$ \mathcal{Z}[x(nT)] = X(z) $, $ x(nT)=0 (n<0) $のとき
---$ \mathcal{Z}[x(nT-kT)] = z^{-k}X(z) $
---$ \mathcal{Z}[x(nT+kT)] = z^{k}\left\{{X(z)-\sum_{n=0}^{k-1}x(nT)z^{-n}}\right\} $
-指数関数の乗算
--$ \mathcal{Z}[a^{n}x(nT)] = X(a^{-1}z) $
-時間領域での畳み込み和
--$ \mathcal{Z}[x(nT)] = X(z) $, $ \mathcal{Z}[h(nT)] = H(z) $のとき、$ y(nT) = \sum^{\infty}_{k=-\infty}x(kT)h(nT-kT) $のz変換は以下のようになる。
---$ Y(z) = \mathcal{Z}[\sum^{\infty}_{k=-\infty}x(kT)h(nT-kT)] $
---$ = X(z)H(z) $
--すなわち、時間領域でのたたみこみのz変換は、各々のz変換の積で表される。

***伝達関数 [#q536e48c]
-畳み込み和で表されたシステムの入出力のz変換の比を伝達関数、あるいは周波数領域での伝達関数と区別するためにパルス伝達関数という。
--$ H(z) = \frac{Y(z)}{X(z)} $
-伝達関数は、インパルス応答のz変換との関係がある。
-離散時間システムの周波数応答の項で説明したとおり、伝達関数に対し、$ z=e^{j\omega{}T} $を代入することにより、システムの周波数特性を得ることができる。
-代数学の基本定理より複素数係数有理式は、多項式の項を除いて1次式の積に分解されることが知られている。よって有理式で表された伝達関数も部分分数分解可能であるのは明らかである。よって各部分分数に対して逆z変換を行うことにより、インパルス応答を求めることが可能である。

***収束領域 [#ze009354]
-z変換は無限等比級数であることから、収束にも条件が存在する。複素数で表された無限等比級数の収束範囲をz平面で示すと円となる。この円を収束円といい、収束円で表された領域を収束領域と言う。一般的に片側z変換の収束領域は収束円の外側となる。

***システムの安定性 [#j734a2e9]
-伝達関数の極が単位円の内部に存在することが安定なシステムであることの条件である。言い換えれば、極が1個でも単位円の外にある場合、そのシステムは不安定である。
--その理由として逆z変換を行う場合には、収束領域上の経路にて1周線積分を行うことになるが、収束領域に単位円内の領域が含まれていない場合には、逆z変換後に得られるインパルス応答は絶対加算可能でない。


**離散フーリエ変換 [#j76defeb]
-離散フーリエ変換とは、離散時間信号に対してのフーリエ変換である。
***サンプリング時間Tの離散フーリエ変換 [#i024978b]
-複素フーリエ級数及び複素フーリエ係数から導出する方法
---$ f(x) \sim \sum^{\infty}_{k=-\infty}C_{k}e^{jk\frac{2\pi}{T'}x} $
---$ C_k = \frac{1}{T'}\int\nolimits_{-\frac{T'}{2}}^{\frac{T'}{2}}f(x)e^{-jk\frac{2\pi}{T'}x}dx $
--N点で離散化した$ x $を$ x_{n} = \frac{T'}{N}n = nT $ $ (n=0,1,2,\cdots,N-1) $とすると
--$ \Delta{}x = x_{n+1}-x_{n} = T $より
---$ f(x_{n}) \sim \sum^{N-1}_{k=0}X(k)e^{jk\frac{2\pi{}}{T'}x_{n}} $
---$ C_{k} \sim \frac{1}{T'}\sum^{N-1}_{n=0}f(x_n)e^{-jk\frac{2\pi{}}{T'}x_{n}}\Delta{}x $
--$ f(x_{n}) = x(nT) $, $ C_{k} = X(k) $として、$ \frac{2\pi}{T'}x_n = \frac{2\pi}{N}n $, $ \frac{1}{T'}\Delta{}x = \frac{1}{N} $なので
---(1) $ X(k) \sim \frac{1}{N}\sum^{N-1}_{n=0}x(nT)e^{-j\frac{2\pi{}}{N}kn} $
---(2) $ x(nT) \sim \sum^{N-1}_{k=0}X(k)e^{j\frac{2\pi{}}{N}kn} $
-z変換から導出する方法
--N点で定義されている入力信号$ x(nT) $のz変換は以下のように表される。
---$ X(z) = \sum_{n=0}^{N-1}x(nT)z^{-n} $
--上記式に$ z=e^{j\omega{}T} $を代入すると
---$ X(e^{j\omega{}T}) = \sum_{n=0}^{N-1}x(nT)e^{-j\omega{}nT} $
--N点で離散化された角周波数$ \omega_{k} = \frac{2\pi}{NT}k $ $ (k=1,2,3,\cdots,N-1) $を$ \omega $の代わりに代入する
---$ X(e^{j\frac{2\pi{}}{N}k}) = \sum_{n=0}^{N-1}x(nT)e^{-j\frac{2\pi{}}{N}kn} $
--表記を$ X(k) =  X(e^{j\frac{2\pi{}}{N}k}) $と変更する。
---(3) $ X(k) = \sum_{n=0}^{N-1}x(nT)e^{-j\frac{2\pi{}}{N}kn} $
---(4) $ x(nT) = \frac{1}{N}\sum_{k=0}^{N-1}X(k)e^{j\frac{2\pi{}}{N}kn} $
--(1),(3)を離散フーリエ変換、(2),(4)を離散フーリエ逆変換と言う。
--ちなみに(1)と(3)及び(2)と(4)では$ \frac{1}{N} $がそれぞれ逆についているが、変換と逆変換を一まとめとして考慮すれば問題ない。
--簡略化の為に上記の変換及び逆変換を以下のように表記する。
---$ X[k] = \mathcal{F}[x[n]] $
---$ x[n] = \mathcal{F}^{-1}[X[k]] $

***離散フーリエ変換の性質 [#w72b96cc]
--線形性(linearity)
---ある定数$ a $, $ b $に対して
---$ ax_1[n]+bx_2[n] $ $ \Leftrightarrow $ $ aX_1[k]+bX_2[k] $
--周期性(periodicity)
---$ X[k] = X[k+N] $
--対称性(symmetry)
---$ X[k]^{\ast} = X[-k] = X[N-k] $

***分解能 [#nb1db50a]
-離散フーリエ変換では、連続的な波形からある時間T'を切り出して、新たにこれを周期T'の連続関数とすることによりフーリエ変換を行っている。この周期T'を基本周期と言う。つまり基本周期T'以上の波形成分は解析不可能である。また基本周期T'の逆数を基本周波数と言い、$ \Delta{f}=\frac{1}{T} $と定義する。
-基本周期T'を時間分解能と言い、基本周波数を周波数分解能と言う。時間分解能を小さくすれば小さくするほど、波形に対しての選択度は向上するが、周波数分解能は低くなる。逆に時間分解能を大きくすれば、周波数領域での選択度は高くなる。

***サンプリング周波数とサンプリング数 [#a5eebfdc]
-離散フーリエ変換は有限の離散信号を計算対象としているので、基本周期T'は、あるサンプリング数Nとサンプリング周期Tとの積に等しく、$ T'=NT $となる。また、サンプリング周期Tの逆数をサンプリング周波数と言い、$ f_s=\frac{1}{T} $と定義する。これにより基本周波数は$ f = \frac{1}{T'}=\frac{1}{NT}=\frac{f_s}{N} $と表現できる。
-ある連続時間信号を離散時間信号としてサンプリングする場合、サンプリング周波数は最低でも連続時間信号に含まれている最大周波数の2倍でなければならない。これを標本化定理と言う。この条件を満たさない場合、周波数のスペクトルにエイリアシングが発生し、離散時間信号から連続時間信号の復元が不可能となってしまう。
--ちなみに意図的にサンプリング周波数を最大周波数より低くした場合、低域通過フィルタ等で高い周波数成分を除去する必要がある。
-まとめると、基本周期T'が大きければ大きいほど、変換後の周波数領域での周波数スペクトルの間隔が小さくなり、周波数分解能が良くなる。しかしサンプリング数Nとサンプリング周期Tとの積はT'で一定となるため、周波数分解能を良くするためにはサンプリング周波数を低くするか、もしくはサンプリング数Nを多く取るかの2択となる。ここでサンプリング周波数を低くすると、エイリアシングが発生したり、解析可能な最大周波数が低くなってしまう。またサンプル数Nを極端に小さくとってしまうと、周波数領域でのスペクトルを解析するにあたり、十分なデータを得られない可能性がある(なぜならばサンプル数Nは周波数領域でのスペクトルの本数であるから)。
--ちなみに通常の離散フーリエ変換のアルゴリズムのオーダーは$ O(N^2) $であるので、実用的な計算時間を考えると、安易にサンプリング数を増やすのはあまり好ましくない。
-よって与えられる計算資源量と、解析対象で真に必要とされているパラメータは何なのかを考慮して、適切に基本周期T'やサンプリング周期T、サンプル数Nを決める必要がある。


**高速フーリエ変換 [#h19e857a]
-高速フーリエ変換(fast Fourier transform:FFT)とは、複素指数関数の性質によって式を変形することにより、離散フーリエ変換を高速に計算することを可能にするアルゴリズムである。

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS