Wavelet超入門 その13 4つのsample点で、ハールウェーブレット変換 1.サンプル数4で、直線を近似してみる
サンプル点が4つ [0,1,2,3]
だったとすると、この4点を結ぶと、直線をあらわします。
この4点を、先ず、step関数で近似したのが、上図です。
2.phi、psi 各関数を定義し直す
以下のように、定義し直します。
phi(n,k):=block( [t],if k*2^(-n)<=t and t<(k+1)*2^(-n) then
1 else 0 )
psi(n,k):=block([t],if k*2^(-n)<=t and t<(k+1/2)*2^(-n) then
1 else if (k+1/2)*2^( -n)<=t and t<(k+1)*2^(-n) then -1 else
0)
そうしますと、今までと違って
このように、phi 関数の2番目の引数は、時間的ズレを表します。
1番目の引数は、 2のマイナスの階乗が幾らか? を表します。(つまり、stepの幅が幾らか?)
つまり、1番目の引数が大きな数字になる程、stepの幅は小さくなります。(周波数が高くなる)
別の定義では、反対に、
1番目の引数は、2のプラスの階乗が幾らか?と、言う定義です。(Ten
Lectures on Wavelets : Ingrid Daubechies
著)
(amazonで、立ち読みできますが、上記の書は、難しくて読めない....)
この場合は、1番目の引数が大きな数字になる程、stepの幅は大きくなります。(周波数が低くなる)
私は、お手本の書(Wavelts Made Easy ウェーブレット変換の基礎 Yves
Nievergelt著 松本先生訳)に従って
1番目の引数が大きな数字になる程、stepの幅は小さくなるほうを、選びます。
これで、やっと、
WaveMra.exe(ウェーブレット実践口講座 付属)の、レベルが小さくなる程、周波数が低くなるのか、やっと、解りましたわ。
つまり、1番目の引数(レベル)が小さくなる程、stepの幅は大きくなります。(周波数が低くなる)
注意点は、2番目の引数は、時間的ズレを表すのですが、
その位置は、1番目の引数(レベル、step幅)によって違ってくる事です。
この場合、1番目の引数はゼロだから、step幅は 2^(-0)=1となるから、時間のずれは 1
一方、
今の場合、1番目の引数は 1だから step幅は 2^(-1)=1/2、 だから、時間のズレは、1/2。
ですので、2番目の引数の1は、
最初にプラスの方向にズレたもの、と言う意味合い(index)みたいなものに、考えとこうっと...勝手に決め込んどります。.
3.やっと、4点でハールウェーブレット変換してみる
再掲します。
先ず、隣り合う2点で、和、差の平均を採る
[0,1]の2点
s1=
(0+1)/2 =
1/2
w1=(0-1)/2 =
-1/2
[2,3]の2点
s2=(2+3)/2 =
5/2
w2=(2-3)/2 =-1/2
そして、関係する phi 関数は、 phi(1,0) ,
phi(1,1)の二つ (幅が1/2だから、1番目の引数は1)
そうすっと、psi 関数のほうも、psi(1,0) , psi(1,1)
を用意する。
すると
合成すると
元のstep関数と、同じになりました。
ここで、 phi(1,0) ,
phi(1,1) を、元のstep関数と、同時に描いてみます。
そうすると、s1*phi(1,0) ,
s2*phi(1,1) は、各2点を表すstep関数の平均を採ったものである事が解ります。
ですので、 w1*psi(1,0)
, w2*psi(1,1) は、元のstep関数との、差、
つまり、元のstep関数を s1*phi(1,0) ,
s2*phi(1,1)で表現した時の、元のstep関数との誤差を、意味する事に、なります。
-----------------------------------------------------------------------------------------------------------------------
しばし、休憩 z,z,z............................................................
ゆく河の流れは絶えずして、しかももとの水にあらず。淀みに浮ぶうたかたは、かつ消え、かつ結びて、久しくとどまりたる例(ためし)なし。世の中にある人と、栖(すみか)とまたかくのごとし。
たましきの都のうちに、棟を並べ、甍(いらか)を争へる、高き、いやしき、人の住ひは、世々を経て尽きせぬものなれど、これをまことかと尋ねれば、昔ありし家は稀(まれ)なり。或は去年(こぞ)焼けて、今年作れり。或は大家(おほいへ)亡びて小家(こいへ)となる。住む人もこれに同じ。所も変らず、人も多かれど、いにしへ見し人は、二三十人が中(うち)に、わづかにひとりふたりなり。朝(あした)に死に、夕(ゆふべ)に生るるならひ、ただ水の泡にぞ似たりける。
知らず、生れ死ぬる人、何方(いずかた)より来たりて、何方へか去る。また知らず、仮の宿り、誰(た)が為にか心を悩まし、何によりてか目を喜ばしむる。その主と栖と、無常を争ふさま、いはばあさがほの露に異ならず。或は露落ちて花残れり。残るといへども朝日に枯れぬ。或は花しぼみて露なほ消えず。消えずといへども夕を待つ事なし。
この頃、頭禿げてきて、メゲテますねん.....
-----------------------------------------------------------------------------------------------------------------------
次に phi(1,0)
, phi(1,1) は、再度 合成する事が出来ます。
関係する関数は、 phi(0,0)
だから、 psi関数も psi(0,0)
を用意する。
s3=(s1+s2)/2 =(1/2+5/2)/2
=3/2
w3=(s1-s2)/2 =(1/2-5/2)/2 =-1
同じ形になる事から、
s1*phi(1,0)+s2*phi(1,1) は、 s3*phi(0,0)
+w3*psi(0,0)で、置き換え可能である事がわかります。
で、最後に、psi(1,0)
,psi(1,1) も交えた、全ての置き換え
s3*phi(0,0)+w3*psi(0,0)+w1*psi(1,0)+w2*psi(1,1)
を、描いてみます。
これは、最初に描いた、4つのサンプル点をstep関数で表現したものと、一致します。
つまり
は
s3*phi(0,0)+w3*psi(0,0)+w1*psi(1,0)+w2*psi(1,1)と、一致します。
以上をヒントにして、
順次高速ハールウェーブレット変換プログラムを、考えてみます。
H.20.12.23