縦軸スケール版、周波数(1/a)版。
連続ウェーブレット変換のテスト。入力式を1024点のFFTを利用してウェーブレット変換する。(ナイキスト周波数512,aで言えば下限0.0020)FFTはこちらを利用した。
フーリエ変換が正弦波を基本として信号を分解するのに対して、ウェーブレット変換はウェーブレットと呼ばれる”波束”のようなものを基本にして信号を分解する。このウェーブレットの局在性により、変換された係数はスケーリングaに加えてシフトbの二変数で記述でき、フーリエ変換では失うってしまう時間方向の情報も保持できる。
f(t)のウェーブレット変換は具体的には \[ \mathcal{W}[f](a,b)=\int dt \psi^*_{ab}(t) f(t)\\ ~~~~~~\mathrm{where}~~~\psi_{ab}(t)=\frac{1}{\sqrt{a}}\psi( \frac{t-b}{a}) \] で表される。ψ_abはシフト・スケーリングされたウェーブレットで、元のψはマザーウェーブレットと呼ばれる。マザーウェーブレットには色々あるが、最も簡単なのはHaarのウェーブレット \[ \psi(t)= \begin{cases} 1 & 0\leq t\lt 1/2\\ -1 & 1/2\leq t\lt 1\\ 0 & \mathrm{otherwise} \end{cases} \] などがある。
ここで、ウェーブレット変換の式を見ると、これは畳み込み積分になっていることが分かる。それを利用すると、 \[ \begin{align} \mathcal{W}[f](a,b)&=\int dt \frac{1}{\sqrt{a}}\psi^*( \frac{t-b}{a}) f(t)\\ &=\left[\frac{\psi^*(\cdot/a)}{\sqrt{a}} * f\right](b)\\ &=\mathcal{F}^{-1}\left[\mathcal{F}\left[\frac{\psi^*(\cdot/a)}{\sqrt{a}} * f\right]\right](b) \end{align} \] ここでFはフーリエ変換。畳み込みのフーリエ変換については畳み込み定理が使えるので、 \[ \mathcal{W}[f](a,b)=\mathcal{F}^{-1}\left[\mathcal{F}\left[\frac{\psi^*(\cdot/a)}{\sqrt{a}}\right]\mathcal{F}[f]\right](b) \] と書ける。よって、ウェーブレットと波形のフーリエ変換を計算したものを単純にかけて、逆フーリエ変換すればウェーブレット変換が計算出来ることが分かった。また、FFTを用いることでNlogNのオーダーでウェーブレット変換を計算できる。実際、上の計算ではこの方法を用いている。
式 | 備考 |
---|---|
sin(10*t*2*pi*t) | 周波数が変化する波形 |
sin(5*2*pi*t)*sin(50*2*pi*t) | うなり |
exp(-(t-0.5)*(t-0.5)/2) | ガウシアン |
sin(10*2*pi*t)*exp(-(t-0.5)*(t-0.5)*100) | ガウシアン波束 |
sin(20*2*pi*t)*exp(-(t-1/3)*(t-1/3)*100)+sin(50*2*pi*t)*exp(-(t-2/3)*(t-2/3)*100) | ガウシアン波束2つ。aの幅0.0002ぐらいで |
H(1/3-t)*sin(9*2*pi*t)+H(t-1/3)*H(2/3-t)*sin(30*2*pi*t)+H(t-2/3)*sin(15*2*pi*t) | 不連続周波数変化。H(t)は階段関数 |
H(t-0.5)-2*H(t-0.55)+H(t-0.60) | a=0.1,b=0.5のHaarウェーブレット |