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
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()
つかえそうだ。