現在、加速度の時系列データをpythonを用いてウェーブレット変換することを試みています。
前提・実現したいこと
現在、加速度の時系列データをpythonを用いてウェーブレット変換することを試みています。
swanライブラリを用いたウェーブレット変換を参考にしてまずはウェーブレット変換をするにあたっての大まかな流れをつかもうとしています。
コードの解読をしていますが、解説が少ない、ウェーブレット変換の理論をしっかりと理解していないこともあり何をしているのかわかりません。
ウェーブレット変換の理論を本やいろいろなサイトを見たりして勉強していますが、内容が難しく理解できていないので、コードの解説と同時に理論の説明もしていただけたら助かります。
-
pycwt.cwt_fの使い方がわかりません。ネットで調べたのですが参考になりそうなサイトを見つけることができませんでした。生成した信号に対して連続ウェーブレット変換をしているとは思うのですが、freqsというものがどういうものなのかがわからず困っています。pycwt.Morlet(omega0)はマザーウェーブレットを指定していると認識しています。
-
pycwt.cwt_fをr変数に格納していますが、このrはある時間に対しての周波数の値が格納されているということでしょうか。
-
ウェーブレット変換の理論、時系列データに対するウェーブレット変換を用いた実装について参考になりそうなサイト等ありましたら教えていただきたいです。
初学者のため、内容が初歩的な質問であると思いますが回答よろしくお願いいたします。
ソースコード
Python
1import matplotlib.pyplot as plt 2import numpy as np 3from swan import pycwt 4 5x = np.arange(0, 20, 0.01) 6y = np.sin(2 * np.pi * 1 * x) * 2 + np.sin(2 * np.pi * 2 * x) * 2 + np.cos(2 * np.pi * 10 * x) 7 8plt.plot(x, y) 9plt.show() 10 11Fs = 1/0.01 12omega0 = 8 13# (1) Freqを指定してcwt 14freqs=np.arange(0.1,20,0.025) 15r=pycwt.cwt_f(y,freqs,Fs,pycwt.Morlet(omega0)) 16rr=np.abs(r) 17 18plt.rcParams['figure.figsize'] = (20, 6) 19fig = plt.figure() 20ax1 = fig.add_axes([0.1, 0.75, 0.7, 0.2]) 21ax2 = fig.add_axes([0.1, 0.1, 0.7, 0.60], sharex=ax1) 22ax3 = fig.add_axes([0.83, 0.1, 0.03, 0.6]) 23 24ax1.plot(x, y, 'k') 25 26img = ax2.imshow(np.flipud(rr), extent=[0, 20, freqs[0], freqs[-1]], 27 aspect='auto', interpolation='nearest') 28 29fig.colorbar(img, cax=ax3) 30 31plt.show()