# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import numpy as np
import pywt
from matplotlib.font_manager import FontProperties
sampling_rate = 1024
t = np.arange(0, 1.0, 1.0 / sampling_rate)
f1 = 100
f2 = 200
f3 = 300
data = np.piecewise(t, [t < 1, t < 0.8, t < 0.3],
[lambda t: np.sin(2 * np.pi * f1 * t), lambda t: np.sin(2 * np.pi * f2 * t),
lambda t: np.sin(2 * np.pi * f3 * t)])
wavename = 'cgau8'
totalscal = 256
fc = pywt.central_frequency(wavename)
cparam = 2 * fc * totalscal
scales = cparam / np.arange(totalscal, 1, -1)
[cwtmatr, frequencies] = pywt.cwt(data, scales, wavename, 1.0 / sampling_rate)
plt.figure(figsize=(8, 4))
plt.subplot(211)
plt.plot(t, data)
plt.xlabel(u"time(s)")
plt.title(u"300Hz 200Hz 100Hz Time spectrum")
plt.subplot(212)
plt.contourf(t, frequencies, abs(cwtmatr))
plt.ylabel(u"freq(Hz)")
plt.xlabel(u"time(s)")
plt.subplots_adjust(hspace=0.4)
plt.show()
print("exit")
import sys
import matplotlib.pyplot as plt
import numpy as np
import pywt
try:
wavelet = pywt.Wavelet('sym5')
try:
level =5# int(sys.argv[2])
except IndexError as e:
level = 10
except ValueError as e:
print("Unknown wavelet")
raise SystemExit
except IndexError as e:
raise SystemExit
data = wavelet.wavefun(level)
if len(data) == 2:
x = data[1]
psi = data[0]
fig = plt.figure()
if wavelet.complex_cwt:
plt.subplot(211)
plt.title(wavelet.name+' real part')
mi, ma = np.real(psi).min(), np.real(psi).max()
margin = (ma - mi) * 0.05
plt.plot(x,np.real(psi))
plt.ylim(mi - margin, ma + margin)
plt.xlim(x[0], x[-1])
plt.subplot(212)
plt.title(wavelet.name+' imag part')
mi, ma = np.imag(psi).min(), np.imag(psi).max()
margin = (ma - mi) * 0.05
plt.plot(x,np.imag(psi))
plt.ylim(mi - margin, ma + margin)
plt.xlim(x[0], x[-1])
else:
mi, ma = psi.min(), psi.max()
margin = (ma - mi) * 0.05
plt.plot(x,psi)
plt.title(wavelet.name)
plt.ylim(mi - margin, ma + margin)
plt.xlim(x[0], x[-1])
else:
funcs, x = data[:-1], data[-1]
labels = ["scaling function (phi)", "wavelet function (psi)",
"r. scaling function (phi)", "r. wavelet function (psi)"]
colors = ("r", "g", "r", "g")
fig = plt.figure()
for i, (d, label, color) in enumerate(zip(funcs, labels, colors)):
mi, ma = d.min(), d.max()
margin = (ma - mi) * 0.05
ax = fig.add_subplot((len(data) - 1) // 2, 2, 1 + i)
ax.plot(x, d, color)
ax.set_title(label)
ax.set_ylim(mi - margin, ma + margin)
ax.set_xlim(x[0], x[-1])
plt.show()