#PyWaveletについての備忘録
- 音声信号に離散ウェーブレット変換をかけたくなったのでとりあえず調査
- 今回使いたいマザーウェーブレットはDaubechiesウェーブレット
- DaubechiesウェーブレットObjectを作成するまで
##Waveletオブジェクトのビルド
Pywaveletではウェーブレットをオブジェクトとして作成する。
使えるウェーブレットはpywt.familiesの中に入ってる。
import pywt
pywt.families()
#['haar', 'db', 'sym', 'coif', 'bior', 'rbio', 'dmey', 'gaus', 'mexh', 'morl', 'cgau', 'shan', 'fbsp', 'cmor']
for family in pywt.families():
print ("%s family:" %family + ",".join(pywt.wavelist(family)))
# haar family:haar
# db family:db1,db2,db3,db4,db5,db6,db7,db8,db9,db10,db11,db12,db13,db14,db15,db16,db17,db18,db19,db20,db21,db22,db23,db24,db25,db26,db27,db28,db29,db30,db31,db32,db33,db34,db35,db36,db37,db38
# sym family:sym2,sym3,sym4,sym5,sym6,sym7,sym8,sym9,sym10,sym11,sym12,sym13,sym14,sym15,sym16,sym17,sym18,sym19,sym20
# coif family:coif1,coif2,coif3,coif4,coif5,coif6,coif7,coif8,coif9,coif10,coif11,coif12,coif13,coif14,coif15,coif16,coif17
# bior family:bior1.1,bior1.3,bior1.5,bior2.2,bior2.4,bior2.6,bior2.8,bior3.1,bior3.3,bior3.5,bior3.7,bior3.9,bior4.4,bior5.5,bior6.8
# rbio family:rbio1.1,rbio1.3,rbio1.5,rbio2.2,rbio2.4,rbio2.6,rbio2.8,rbio3.1,rbio3.3,rbio3.5,rbio3.7,rbio3.9,rbio4.4,rbio5.5,rbio6.8
# dmey family:dmey
# gaus family:gaus1,gaus2,gaus3,gaus4,gaus5,gaus6,gaus7,gaus8
# mexh family:mexh
# morl family:morl
# cgau family:cgau1,cgau2,cgau3,cgau4,cgau5,cgau6,cgau7,cgau8
# shan family:shan
# fbsp family:fbsp
# cmor family:cmor
各familyには数種類のウェーブレットが存在(おそらく長さが違う)。
試しにdb3のウェーブレットObjectを作ってみる。
printを実行すると作成したウェーブレットObjectの名称や特性などが出力される。
w = pywt.Wavelet("db3")
print w
# Wavelet db3
# Family name: Daubechies
# Short name: db
# Filters length: 6
# Orthogonal: True
# Biorthogonal: True
# Symmetry: asymmetric
# DWT: True
# CWT: False
同様にdb5を作ってみる。
w = pywt.Wavelet("db5")
print w
# Wavelet db5
# Family name: Daubechies
# Short name: db
# Filters length: 10
# Orthogonal: True
# Biorthogonal: True
# Symmetry: asymmetric
# DWT: True
# CWT: False
Filter lengthが名前の数字の2倍になるらしい。
各要素の説明
- Family name: ウェーブレットの種類
- Short name: ウェーブレットの略称
- Filter length:展開の次数らしい。いまいち良くわからない。*
- Orthogonal:直交性を持つか否か。
- Biorthogonal:双直交性を持つか否か。
- Symmetry:対称性を持つか否か。
- DWT:DWTに使えるか否か。(明記されてないため間違ってるかも)
- CWT:CWTに使えるか否か。(DWTと同様に明記されていない)
*追記:次数の大きいものほど変化率の大きな部分のみを抽出できるらしい
##まとめ
- PywaveletのAPIドキュメントをとりあえず和訳
- ウェーブレットObjectの生成ができたらしい
書いてる途中に色々わからないことが出てきて、調べるうちにさらにわからなくなった。
とりあえず今回はここら辺で。。