2015年3月19日木曜日

やり直しのための信号数学: 第 2 章 正規直交基底とディジタル信号解析

2.1 正規直交基底とは

今度は 4 個のサンプルから成るサンプル列を扱う場合、つまり 4 次元の場合の話。 ここでは N 次元のノルムの定義に \[ \| \boldsymbol{x} \| = \sqrt{ \frac{1}{N} \sum_{i=0}^{N-1}{x_i}^2 } \] を使う。こうしておくと次元数に関わらず全ての要素が 1 のベクトルは大きさ(ノルム)が 1 として扱えて便利だかららしい。 また、このノルムの定義を使う場合、内積の定義は \[ \langle \boldsymbol{x}, \boldsymbol{y} \rangle = \frac{1}{N} \sum_{i=0}^{N-1}x_i y_i \] を使う。こうしておくと内積とノルムの一般的な関係 \[ \langle \boldsymbol{x}, \boldsymbol{x} \rangle = {\| \boldsymbol{x} \|}^2 \] が成り立つ。

とにかく、この前提のもとでは次のベクトルの組 \[ \begin{align*} \boldsymbol{\phi}^{(0)} &= \{1, 1, 1, 1 \} \\ \boldsymbol{\phi}^{(1)} &= \{1, 1, -1, -1 \} \\ \boldsymbol{\phi}^{(2)} &= \{1, -1, -1, 1 \} \\ \boldsymbol{\phi}^{(3)} &= \{1, -1, 1, -1 \} \end{align*} \] が正規直交基底となる。計算してみればこれらのベクトルのノルムは 1, 相異なる 2 つのベクトルの内積は 0 になる。 この 4 つのベクトルはもちろん適当に選んだわけではなく、"アダマール変換"に関連するものらしい。

2.2 正規直行規定によるディジタル信号分解

何かを測定して 4 個のディジタル値のサンプル \( \{ f_0, f_1, f_2, f_3 \} \) を得たとする。 これらを成分とするベクトル \( \boldsymbol{f} \) は(もちろん)先の正規直交基底ベクトルの線形結合として表すことができ、 \[ \boldsymbol{f} = F_0 \boldsymbol{\phi}^{(0)} + F_1 \boldsymbol{\phi}^{(1)} + F_2 \boldsymbol{\phi}^{(2)} + F_3 \boldsymbol{ \phi}^{(3)} \] となったする。ここで \( F_k (k = 0, 1, 2, 3) \) は正規直交基底ベクトルとの内積で \[ F_k = \langle \boldsymbol{f}, \boldsymbol{\phi}^{(k)} \rangle (k = 0, 1, 2, 3) \tag{1} \] から求められる。このように 1 次結合で表すことを「直行展開する」という。この意味深な正規直交基底ベクトルで直行展開することが「ディジタル信号の分解」ということになるらしい。

式 (1) につして \( k = 0 \) の場合、 \[ \begin{align*} F_0 &= \langle \boldsymbol{f}, \boldsymbol{\phi}^{(0)} \rangle \\ &= \langle \{ f_0, f_1, f_2, f_3 \}, \{ 1, 1, 1, 1 \} \rangle \\ &= \frac{1}{4} ( 1 \cdot f_0 + 1 \cdot f_1 + 1 \cdot f_2 + 1 \cdot f_3 ) \\ &= \frac{1}{4} ( f_0 + f_1 + f_2 + f_3 ) \end{align*} \] となる。同様に、 \[ \begin{align*} F_1 &= \frac{1}{4} ( f_0 + f_1 - f_2 - f_3 ) \\ F_2 &= \frac{1}{4} ( f_0 - f_1 - f_2 + f_3 ) \\ F_3 &= \frac{1}{4} ( f_0 - f_1 + f_2 - f_3 ) \\ \end{align*} \] となる。

2.3 正規直交基底によるディジタル信号合成

自明だが、直交展開した係数がわかれば、 \[ \boldsymbol{f} = F_0 \boldsymbol{\phi}^{(0)} + F_1 \boldsymbol{\phi}^{(1)} + F_2 \boldsymbol{\phi}^{(2)} + F_3 \boldsymbol{ \phi}^{(3)} \] よりもとのベクトル、つまりもとのディジタル信号を合成できる。これは \[ \boldsymbol{f} = \langle \boldsymbol{f}, \boldsymbol{\phi}^{(0)} \rangle \boldsymbol{\phi}^{(0)} + \langle \boldsymbol{f}, \boldsymbol{\phi}^{(1)} \rangle \boldsymbol{\phi}^{(1)} + \langle \boldsymbol{f}, \boldsymbol{\phi}^{(2)} \rangle \boldsymbol{\phi}^{(2)} + \langle \boldsymbol{f}, \boldsymbol{\phi}^{(3)} \rangle \boldsymbol{\phi}^{(3)} \] とも表される。この \( \boldsymbol{f} \) の各成分 \( f_k (k = 0, 1, 2, 3) \) は \[ f_k = \langle \boldsymbol{f}, \boldsymbol{\phi}^{(0)} \rangle \phi_k^{(0)} + \langle \boldsymbol{f}, \boldsymbol{\phi}^{(1)} \rangle \phi_k^{(1)} + \langle \boldsymbol{f}, \boldsymbol{\phi}^{(2)} \rangle \phi_k^{(2)} + \langle \boldsymbol{f}, \boldsymbol{\phi}^{(3)} \rangle \phi_k^{(3)} \] となる。( \( \phi_k^{(n)} \) はスカラーであることに注意。)

2.4 波形の類似性と相関値

1 章で軽く触れた相関値について再び。ここからは二つの N サンプルのディジタル信号 \( \boldsymbol{f} = \{ f_0, f_1, \cdots, f_{N-1} \} \) と \( \boldsymbol{g} = \{ g_0, g_1, \cdots, g_{N-1} \} \) の相関値を \[ R^{(fg)} = \frac{ \langle \boldsymbol{f}, \boldsymbol{g} \rangle }{ \|\boldsymbol{f}\| \|\boldsymbol{g}\| } \] と表す。(繰り返しになるがこれは \( \boldsymbol{f} \) と \( \boldsymbol{g} \) のなす角の \( cos(\theta) \) と同じ。) これに(この本が使っている)内積、ノルムを代入すると \[ \begin{align*} R^{(fg)} &= \frac{ \frac{1}{N} \sum_{i=0}^{N-1} f_i g_i }{ \sqrt{ \frac{1}{N} \sum_{i=0}^{N-1}{f_i}^2 } \sqrt{ \frac{1}{N} \sum_{i=0}^{N-1}{g_i}^2 } } \\ &= \frac{ \sum_{i=0}^{N-1} f_i g_i }{ \sqrt{ \sum_{i=0}^{N-1}{f_i}^2 } \sqrt{ \sum_{i=0}^{N-1}{g_i}^2 } } \end{align*} \] となる。

周期関数の一周期分の信号(サンプル値のベクトル) \( \boldsymbol{f} = \{ f_0, f_1, \cdots, f_{N-1} \} \) とこれを N 倍した信号 \( \boldsymbol{g} = N \boldsymbol{f} \) の相関係数は 1 になるが、定数 C を加えた信号 \( \boldsymbol{h}: h_i = f_i + C \) との相関係数は(同じ形の信号なのに) 1 にならない。 これが 1 になるようにするには、各サンプル値からサンプル値の平均を引いたベクトルを使って相関係数をもとめればいい。 (単に \( \boldsymbol{f} \) も \( \boldsymbol{g} \) 波形の震央が 0 になるように調整してから相関係数を求めれば OK という話。)

2.5 相関値の見方

\( \boldsymbol{R}^{(fg)} = 1 \) 同相
\( \boldsymbol{R}^{(fg)} > 0 \) 進み位相 ( \( \boldsymbol{g} \) が進んでいる)
\( \boldsymbol{R}^{(fg)} = 0 \) 相関なし (位相が \( \pm \frac{\pi}{2} \) ずれている)
\( \boldsymbol{R}^{(fg)} < 0 \) 遅れ位相 ( \( \boldsymbol{g} \) が遅れている)
\( \boldsymbol{R}^{(fg)} = -1 \) 逆相

2.6 相互相関係数

二つの似た波形についてどれだけ位相がずれているかを評価するには、相互相関係数 \[ \tilde{R}_n^{(fg)} = \frac{ \sum_{i=0}^{N-1} f_i g_{i+n} }{ \sqrt{ \sum_{i=0}^{N-1}{f_i}^2 } \sqrt{ \sum_{i=0}^{N-1}{g_{i+n}}^2 } } \] を使う。これは n サンプル分を位相をずらしてみた相関係数ということになる。これを \( n = 0, \dots, N - 1 \) まで N 個求めてみて、値が一番大きく(理想的には 1)なったときの n が位相のずれ幅。

2.7 自己相関係数

ある信号に周期性があるのか、あるならばその周期がどれだけなのかしりたい場合は \( \boldsymbol{f} = \{ f_0, f_1, \cdots, f_{N-1} \} \) と n サンプルずらした \( \boldsymbol{\tilde{f}} = \{ f_{0+n}, f_{1+n}, \cdots, f_{N-1+n} \} \) について自己相関係数 \[ \begin{align*} \tilde{R}_n^{(ff)} &= \frac{ \frac{1}{N} \sum_{i=0}^{N-1} f_i f_{i+n} }{ \sqrt{ \frac{1}{N} \sum_{i=0}^{N-1} {f_i}^2 } \sqrt{ \frac{1}{N} \sum_{i=0}^{N-1} {f_{i+n}}^2 }} \\ &= \frac{ \frac{1}{N} \sum_{i=0}^{N-1} f_i f_{i+n} }{ \frac{1}{N} \sum_{i=0}^{N-1} {f_i}^2 } \\ &= \frac{ \sum_{i=0}^{N-1} f_i f_{i+n} }{ \sum_{i=0}^{N-1} {f_i}^2 } \end{align*} \] の n を 0 から N-1 まで変化させながら求めてみる。その結果に周期的な極大が現れれば、周期関数であり、その周期がもとの信号の周期になる。

余談

MathJax すげー!と思ってこの本の理解を整理するために書き始めたけど、やっぱり数式打つのが面倒になってきた...

それでも Web の世界で(画像を貼り付けるような面倒で残念な方法をつかったり、環境依存な手段をつかわずとも)まっとうに数式を記述できるようにした MathJax は偉大だと思う。 逆になぜ今まで科学論文から始まった Web の世界にまっとうな数式記述手段がなかったんだろう? Web の世界が急速に成長を始めたころには既にアカデミックなコミュニティはニッチな世界になってたから?

0 件のコメント:

コメントを投稿