とりあえず,周波数解析してスペクトルグラムを画像として出力するプログラムを組みたいと思いまして...
でも周波数解析は詳しくないので,勉強します.
周波数解析っていったら,フーリエ変換が有名です,が,ちょっと問題もあるみたいです.
ウェーブレット変換なるものが,その問題に対応できるようなので,少し勉強してみます.
-諸注意-----------------------------------------------------------------
※1
こういうネタは,理系大学生のカモになりやすいので,完コピを阻止するために,
喋り口調+稚拙な表現で書いています.あしからず.
※2
私は,数学者でも数学教師でも物理学者でもなんでもない人間ですので,
間違いがった事を書いてあるかもしれません.
※3
プログラミングに関しては,ソースコードを公開している方が既にいらっしゃるため,
必要ないと判断し,載せません.
-本題-------------------------------------------------------------------
ウェーブレット変換は,マザーウェーブレットの定義とウェーブレット変換式で構成されているみたいだよ.
今回は,ガボールウェーブレット変換なるものを詳しく勉強するよ.
(ネットで,説明とC/C++のコードを見つける事ができるよ)
参考にさせてもらったサイト様)
http://hp.vector.co.jp/authors/VA046927/gabor_wavelet/gabor_wavelet.html
http://www.softist.com/programming/gabor-wavelet/gabor-wavelet.htm
まず,ウェーブレット変換式は
こんな式らしいよ.積分とか読み方わからない記号もあるね(プサイって読むらしいよ),難しそうだね.
aは周波数の逆数
bは時間
tは離散データの場合,サンプル番号÷サンプリング周波数 らしいよ.
次に(ガボールウェーブレット変換の場合,マザーウェーブレットって言われるものが,ガボールウェーブレットってわけだね)ガボールウェーブレットの定義を見てみるよ.
こっちは自然対数とか複素数とかあるよ.ややこしそうだね.
Ψ(t)ってのは,ウェーブレット変換式にも出て来たね.ウェーブレット変換式でこれを使ってるってことだね.
ωは角速度(aを周波数の逆数にしてる場合,ω=2πだそうだよ)
σは定数で,減衰係数って呼ばれてるらしいよ.
それじゃあ,ガボールウェーブレットを詳しく見てみるよ.
の部分は,πもσも定数だから,これも定数だね.
はtが含まれてるから,変数として見れるね.とりあえず,グラフにプロットしてみるよ.
なんだか山なりのグラフになったね.
で表せる式は,こういう山なりのグラフになるよ.
aは1/(2σ^2),xはtだね.
aを大きくすると,山の幅が狭まり,小さくすると山の幅が広くなるよ.
σは分母にあるから,小さくすると山の山の幅がが狭くなるよ.
たとえばσ=0.5にしてみると,
山の幅が狭くなったね.
問題はこいつだね,複素数入ってるからそのままじゃ計算しにくいよ.
実数部分と虚数部分にわけてあげるよ.
としたとき,
のように変形できるらしいよ(なんでそうなるかは知らないよ).
今回の場合
z=iωt だから
x=0,y=ωt で当てはめてみると,
こんな風に変形できるね.
cosの方が実数部分,sinの方が虚数部分だね.
それじゃあ,実数部分のグラフをプロットしてみるよ.プロットするまでもないけどね.
そうだね,周期が1のcos波だね.
つまり,さっきの山なりの波形と,このギザギザした波形が重なった波形が,
Ψ(t)の構成成分になってるわけだね.
実数部分だけのグラフをプロットしてみると,
左右にいくにつれて,山なりの波形の影響を受けて減衰していく波形になるね.
当然,山なりの波形の山の幅が小さくなれば,もっと強くし減衰していくだろうね.
山なりの波形の山の幅はσが関係していたから,減衰係数なんだね,なるほどね.
ところで,-3≦t≦3とか,適当に決めちゃってたけど,
ウェーブレット変換式では,
が与えられているね.
aは周波数の逆数bは時間
tは離散データの場合,サンプル番号÷サンプリング周波数 だったね.
tもbも時間だから,分子は時間差だね,
分母のaは周波数の逆数だから,時間差に周波数をかけてる式と見なせるね.
時間差がなくなれば,グラフの横軸=0の所だね.
ガボールウェーブレットの中のtを周波数f×時間差dに置き換えてみると,
(左は山なりの波形,右はギザギザの波形だったよ)
ギザギザの波形は,fが高くなれば,周期が短くなるね.
山なりの波形は,fが大きくなれば,山の幅が狭くなるよ.
つまり,ガボールウェーブレットはtを介して,周波数を受け取っていたんだね.
ところで,周波数とか時間はともかく,σはいくつくらいがいいんだろうね.
そこらへんは参考にさせてもらったサイト様で詳しく述べられているよ.
区切りがいいので,ウェーブレットの定義の説明は次回へ続くよ.
0 件のコメント:
コメントを投稿
この投稿へのリンク
リンクを作成