Processing math: 100%

wavelet tranformation(cont.)

縦軸スケール版、周波数(1/a)版。

aの幅 グリッド幅a グリッド幅b  OD

WT  波形  FFT  グリッド  グリッド(周波数?)
134ms

連続ウェーブレット変換のテスト。入力式を1024点のFFTを利用してウェーブレット変換する。(ナイキスト周波数512,aで言えば下限0.0020)FFTはこちらを利用した。

フーリエ変換が正弦波を基本として信号を分解するのに対して、ウェーブレット変換はウェーブレットと呼ばれる”波束”のようなものを基本にして信号を分解する。このウェーブレットの局在性により、変換された係数はスケーリングaに加えてシフトbの二変数で記述でき、フーリエ変換では失うってしまう時間方向の情報も保持できる。

f(t)のウェーブレット変換は具体的には W[f](a,b)=dtψab(t)f(t)      where   ψab(t)=1aψ(tba) で表される。ψ_abはシフト・スケーリングされたウェーブレットで、元のψはマザーウェーブレットと呼ばれる。マザーウェーブレットには色々あるが、最も簡単なのはHaarのウェーブレット ψ(t)={10t<1/211/2t<10otherwise などがある。

ここで、ウェーブレット変換の式を見ると、これは畳み込み積分になっていることが分かる。それを利用すると、 W[f](a,b)=dt1aψ(tba)f(t)=[ψ(/a)af](b)=F1[F[ψ(/a)af]](b) ここでFはフーリエ変換。畳み込みのフーリエ変換については畳み込み定理が使えるので、 W[f](a,b)=F1[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ウェーブレット

トップ