def plot(data, w, title): print title w = pywt.Wavelet(w) a = data ca = [] cd = [] for i in xrange(5): (a, d) = pywt.dwt(a, w, mode) ca.append(a) cd.append(d) rec_a = [] rec_d = [] for i, coeff in enumerate(ca): coeff_list = [coeff, None] + [None]*i rec_a.append(pywt.waverec(coeff_list, w)) for i, coeff in enumerate(cd): coeff_list = [None, coeff] + [None]*i rec_d.append(pywt.waverec(coeff_list, w)) pylab.figure() ax_main = pylab.subplot(len(rec_a)+1,1,1) pylab.title(title) ax_main.plot(data) pylab.xlim(0, len(data)-1) for i, y in enumerate(rec_a): #print len(data), len(x), len(data) / (2**(i+1)) ax = pylab.subplot(len(rec_a)+1, 2, 3+i*2) ax.plot(y, 'r') pylab.xlim(0, len(y)-1) pylab.ylabel("A%d" % (i+1)) for i, y in enumerate(rec_d): ax = pylab.subplot(len(rec_d)+1, 2, 4+i*2) ax.plot(y, 'g') pylab.xlim(0, len(y)-1) #pylab.ylim(min(0,1.4*min(x)), max(0,1.4*max(x))) pylab.ylabel("D%d" % (i+1))
def plot(data, w, title): print title w = pywt.Wavelet(w) a = data ca = [] cd = [] for i in xrange(5): (a, d) = pywt.dwt(a, w, mode) ca.append(a) cd.append(d) rec_a = [] rec_d = [] for i, coeff in enumerate(ca): coeff_list = [coeff, None] + [None] * i rec_a.append(pywt.waverec(coeff_list, w)) for i, coeff in enumerate(cd): coeff_list = [None, coeff] + [None] * i rec_d.append(pywt.waverec(coeff_list, w)) pylab.figure() ax_main = pylab.subplot(len(rec_a) + 1, 1, 1) pylab.title(title) ax_main.plot(data) pylab.xlim(0, len(data) - 1) for i, y in enumerate(rec_a): #print len(data), len(x), len(data) / (2**(i+1)) ax = pylab.subplot(len(rec_a) + 1, 2, 3 + i * 2) ax.plot(y, 'r') pylab.xlim(0, len(y) - 1) pylab.ylabel("A%d" % (i + 1)) for i, y in enumerate(rec_d): ax = pylab.subplot(len(rec_d) + 1, 2, 4 + i * 2) ax.plot(y, 'g') pylab.xlim(0, len(y) - 1) #pylab.ylim(min(0,1.4*min(x)), max(0,1.4*max(x))) pylab.ylabel("D%d" % (i + 1))
#!/usr/bin/env python # -*- coding: utf-8 -*- from supreme.lib import pywt data = range(16) wavelet = 'db4' level = 2 mode = 'cpd' print "original data:" print data print # dec = [cA(n-1) cD(n-1) cD(n-2) ... cD(2) cD(1)] dec = pywt.wavedec(data, wavelet, mode, level) print "decomposition:" print "cA%d:" % (len(dec)-1) print [("%.4f" % val) for val in dec[0]] for i,d in enumerate(dec[1:]): print "cD%d:" % (len(dec)-1-i) print [("%.4f" % val) for val in d] print print "reconstruction:" print [("%.4f" % val) for val in pywt.waverec(dec, wavelet, mode)]