浅谈Python小波分析库Pywavelets的一点使用心得


Posted in Python onJuly 09, 2019

本文介绍了Python小波分析库Pywavelets,分享给大家,具体如下:

# -*- coding: utf-8 -*- 
import numpy as np
import math
import matplotlib.pyplot as plt
import pandas as pd
import datetime 
from scipy import interpolate
from pandas import DataFrame,Series

import numpy as np 
import pywt 

data = np.linspace(1, 4, 7) 

# pywt.threshold方法讲解: 
#        pywt.threshold(data,value,mode ='soft',substitute = 0 ) 
#        data:数据集,value:阈值,mode:比较模式默认soft,substitute:替代值,默认0,float类型 

#data:  [ 1.  1.5 2.  2.5 3.  3.5 4. ] 
#output:[ 6.  6.  0.  0.5 1.  1.5 2. ] 
#soft 因为data中1小于2,所以使用6替换,因为data中第二个1.5小于2也被替换,2不小于2所以使用当前值减去2,,2.5大于2,所以2.5-2=0.5..... 

print(pywt.threshold(data, 2, 'soft',6))  


#data:  [ 1.  1.5 2.  2.5 3.  3.5 4. ] 
#hard data中绝对值小于阈值2的替换为6,大于2的不替换 
print (pywt.threshold(data, 2, 'hard',6)) 


#data:  [ 1.  1.5 2.  2.5 3.  3.5 4. ] 
#data中数值小于阈值的替换为6,大于等于的不替换 
print (pywt.threshold(data, 2, 'greater',6) )

print (data )
#data:  [ 1.  1.5 2.  2.5 3.  3.5 4. ] 
#data中数值大于阈值的,替换为6 
print (pywt.threshold(data, 2, 'less',6) )

[6. 6. 0. 0.5 1. 1.5 2. ]
[6. 6. 2. 2.5 3. 3.5 4. ]
[6. 6. 2. 2.5 3. 3.5 4. ]
[1. 1.5 2. 2.5 3. 3.5 4. ]
[1. 1.5 2. 6. 6. 6. 6. ]

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import numpy as np
import matplotlib.pyplot as plt

import pywt
import pywt.data


ecg = pywt.data.ecg()

data1 = np.concatenate((np.arange(1, 400),
            np.arange(398, 600),
            np.arange(601, 1024)))
x = np.linspace(0.082, 2.128, num=1024)[::-1]
data2 = np.sin(40 * np.log(x)) * np.sign((np.log(x)))

mode = pywt.Modes.smooth


def plot_signal_decomp(data, w, title):
  """Decompose and plot a signal S.
  S = An + Dn + Dn-1 + ... + D1
  """
  w = pywt.Wavelet(w)#选取小波函数
  a = data
  ca = []#近似分量
  cd = []#细节分量
  for i in range(5):
    (a, d) = pywt.dwt(a, w, mode)#进行5阶离散小波变换
    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
    if i ==3:
      print(len(coeff))
      print(len(coeff_list))
    rec_d.append(pywt.waverec(coeff_list, w))

  fig = plt.figure()
  ax_main = fig.add_subplot(len(rec_a) + 1, 1, 1)
  ax_main.set_title(title)
  ax_main.plot(data)
  ax_main.set_xlim(0, len(data) - 1)

  for i, y in enumerate(rec_a):
    ax = fig.add_subplot(len(rec_a) + 1, 2, 3 + i * 2)
    ax.plot(y, 'r')
    ax.set_xlim(0, len(y) - 1)
    ax.set_ylabel("A%d" % (i + 1))

  for i, y in enumerate(rec_d):
    ax = fig.add_subplot(len(rec_d) + 1, 2, 4 + i * 2)
    ax.plot(y, 'g')
    ax.set_xlim(0, len(y) - 1)
    ax.set_ylabel("D%d" % (i + 1))


#plot_signal_decomp(data1, 'coif5', "DWT: Signal irregularity")
#plot_signal_decomp(data2, 'sym5',
#          "DWT: Frequency and phase change - Symmlets5")
plot_signal_decomp(ecg, 'sym5', "DWT: Ecg sample - Symmlets5")


plt.show()

72
5

浅谈Python小波分析库Pywavelets的一点使用心得

将数据序列进行小波分解,每一层分解的结果是上次分解得到的低频信号再分解成低频和高频两个部分。如此进过N层分解后源信号X被分解为:X = D1 + D2 + … + DN + AN 其中D1,D2,…,DN分别为第一层、第二层到等N层分解得到的高频信号,AN为第N层分解得到的低频信号。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
vc6编写python扩展的方法分享
Jan 17 Python
python实现自动登录人人网并访问最近来访者实例
Sep 26 Python
python模拟鼠标拖动操作的方法
Mar 11 Python
python实现自动重启本程序的方法
Jul 09 Python
python读取文本中的坐标方法
Oct 14 Python
python单向循环链表原理与实现方法示例
Dec 03 Python
Python安装tar.gz格式文件方法详解
Jan 19 Python
keras多显卡训练方式
Jun 10 Python
Python2.6版本pip安装步骤解析
Aug 17 Python
利用python 读写csv文件
Sep 10 Python
Django修改app名称和数据表迁移方案实现
Sep 17 Python
Python机器学习工具scikit-learn的使用笔记
Jan 28 Python
python basemap 画出经纬度并标定的实例
Jul 09 #Python
python实现列表中最大最小值输出的示例
Jul 09 #Python
python实现基于朴素贝叶斯的垃圾分类算法
Jul 09 #Python
python把ipynb文件转换成pdf文件过程详解
Jul 09 #Python
深入了解Python枚举类型的相关知识
Jul 09 #Python
Python 的AES加密与解密实现
Jul 09 #Python
python+numpy按行求一个二维数组的最大值方法
Jul 09 #Python
You might like
截获网站title标签之家内容的例子
2006/10/09 PHP
PHP中cookies使用指南
2007/03/16 PHP
php单态设计模式(单例模式)实例
2014/11/18 PHP
PHP实现动态web服务器方法
2015/07/29 PHP
PHP实现15位身份证号转18位的方法分析
2019/10/16 PHP
javascript的onchange事件与jQuery的change()方法比较
2009/09/28 Javascript
js形成页面的一种遮罩效果实例代码
2014/01/04 Javascript
angularjs 处理多个异步请求方法汇总
2015/01/06 Javascript
JavaScript中匿名函数用法实例
2015/03/23 Javascript
被遗忘的javascript的slice() 方法
2015/04/20 Javascript
jQuery实现tab选项卡效果的方法
2015/07/08 Javascript
js实现tab切换效果实例
2015/09/16 Javascript
JavaScript数组合并的多种方法
2016/05/22 Javascript
nodejs基础知识
2017/02/03 NodeJs
es6学习笔记之Async函数基本教程
2017/05/11 Javascript
详解windows下vue-cli及webpack 构建网站(二)导入bootstrap样式
2017/06/17 Javascript
JavaScript实现的仿新浪微博原生态输入字数即时检查功能【兼容IE6】
2017/09/26 Javascript
vue 权限认证token的实现方法
2018/07/17 Javascript
解决Vue router-link绑定事件不生效的问题
2020/07/22 Javascript
python多线程抓取天涯帖子内容示例
2014/04/03 Python
举例讲解Python中的Null模式与桥接模式编程
2016/02/02 Python
python实现FTP服务器服务的方法
2017/04/11 Python
安装好Pycharm后如何配置Python解释器简易教程
2019/06/28 Python
Python 中使用 PyMySQL模块操作数据库的方法
2019/11/10 Python
windows下Pycharm安装opencv的多种方法
2020/03/05 Python
Python count函数使用方法实例解析
2020/03/23 Python
基于Python绘制美观动态圆环图、饼图
2020/06/03 Python
Django之腾讯云短信的实现
2020/06/12 Python
解决python对齐错误的方法
2020/07/16 Python
python爬虫beautifulsoup解析html方法
2020/12/07 Python
巡警年度自我鉴定
2014/02/21 职场文书
技校毕业生个人学习的自我评价
2014/02/21 职场文书
公司总经理工作职责管理办法
2014/02/28 职场文书
学习经验交流会主持词
2014/04/01 职场文书
二手房购房意向书
2015/05/09 职场文书
父母教会我观后感
2015/06/17 职场文书