縦軸スケール版、周波数(1/a)版。
連続ウェーブレット変換のテスト。入力式を1024点のFFTを利用してウェーブレット変換する。(ナイキスト周波数512,aで言えば下限0.0020)FFTはこちらを利用した。
フーリエ変換が正弦波を基本として信号を分解するのに対して、ウェーブレット変換はウェーブレットと呼ばれる”波束”のようなものを基本にして信号を分解する。このウェーブレットの局在性により、変換された係数はスケーリングaに加えてシフトbの二変数で記述でき、フーリエ変換では失うってしまう時間方向の情報も保持できる。
f(t)のウェーブレット変換は具体的には W[f](a,b)=∫dtψ∗ab(t)f(t) where ψab(t)=1√aψ(t−ba) で表される。ψ_abはシフト・スケーリングされたウェーブレットで、元のψはマザーウェーブレットと呼ばれる。マザーウェーブレットには色々あるが、最も簡単なのはHaarのウェーブレット ψ(t)={10≤t<1/2−11/2≤t<10otherwise などがある。
ここで、ウェーブレット変換の式を見ると、これは畳み込み積分になっていることが分かる。それを利用すると、 W[f](a,b)=∫dt1√aψ∗(t−ba)f(t)=[ψ∗(⋅/a)√a∗f](b)=F−1[F[ψ∗(⋅/a)√a∗f]](b) ここでFはフーリエ変換。畳み込みのフーリエ変換については畳み込み定理が使えるので、 W[f](a,b)=F−1[F[ψ∗(⋅/a)√a]F[f]](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ウェーブレット |