小波变换-python

# -*- 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()

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

优化大师傅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值