LoginSignup
4
6

More than 5 years have passed since last update.

PyWaveletを使ったDWTへの入り口(1)

Last updated at Posted at 2019-01-20

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の生成ができたらしい

書いてる途中に色々わからないことが出てきて、調べるうちにさらにわからなくなった。
とりあえず今回はここら辺で。。

4
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6