1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import numpy as np
import matplotlib.pyplot as plt
from pywt import WaveletPacket
import pywt.data
ecg = pywt.data.ecg()
wp = WaveletPacket(ecg, 'sym5', maxlevel=4)
fig = plt.figure()
plt.set_cmap('bone')
ax = fig.add_subplot(wp.maxlevel + 1, 1, 1)
ax.plot(ecg, 'k')
ax.set_xlim(0, len(ecg) - 1)
ax.set_title("Wavelet packet coefficients")
for level in range(1, wp.maxlevel + 1):
ax = fig.add_subplot(wp.maxlevel + 1, 1, level + 1)
nodes = wp.get_level(level, "freq")
nodes.reverse()
labels = [n.path for n in nodes]
values = -abs(np.array([n.data for n in nodes]))
ax.imshow(values, interpolation='nearest', aspect='auto')
ax.set_yticks(np.arange(len(labels) - 0.5, -0.5, -1), labels)
plt.setp(ax.get_xticklabels(), visible=False)
plt.show()
|