Pythonで連続ウェーブレット解析

swanという連続ウェーブレット解析のモジュールがあった。
swan-0.5.4a.tar.gzを試してみる。

必要なモジュール

Gtkは最新版2.12.9を入れた。
PyGtkはバイナリからインストール。

swanはアーカイブを展開して、

python setup.py install

とする。ただし、Windowsの場合はそのままではインストールできないので、
setup.cfgを以下のように書き換えてから実行する。

# very basic config

[install]
prefix=C:\Python25
optimize=2

インストール後にC:\Python25\Scriptsに「swan」というファイルができるので

move swan swan.py

としておく。

試す

2. Simple usageを見ながら

まずは信号をつくる。「ipython -pylab」で起動して

import math,numpy,scipy,matplotlib

Fs = 65.0
time  = arange(0,16,1/Fs)
signal = sin(2*pi*1.2*time) + cos(2*pi*3.7*time)
save('signal.dat', signal)

実行はコマンドプロンプトから

swan.py -s 65 signal.dat

として、Apply CWTを押すと実行される。

pycwtのみを使ったプログラム

swan: some visible examplesにあるように、GUIなしでプログラムを書いてもよい。

import pylab as p
import iwavelets.pycwt as w

Fs = 65.0
time  = p.arange(0,16,1/Fs)
signal = p.sin(2*p.pi*1.2*time) + p.cos(2*p.pi*3.7*time)

freqs=p.arange(0.1,5,0.025)
fc=1.5

r=w.cwt_f(signal,freqs,Fs,w.Morlet(fc))
rr=r.real**2+r.imag**2

p.imshow(p.flipud(rr),aspect='auto',extent=(time[0],time[-1],freqs[0],freqs[-1]))

p.xlabel('Time[s]')
p.ylabel('Frequency[Hz]')

p.show()

つかえそうだ。