浅谈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 相关文章推荐
Python实现的生成自我描述脚本分享(很有意思的程序)
Jul 18 Python
使用python编写android截屏脚本双击运行即可
Jul 21 Python
python数据结构链表之单向链表(实例讲解)
Jul 25 Python
Python连接phoenix的方法示例
Sep 29 Python
使用Python操作excel文件的实例代码
Oct 15 Python
pandas每次多Sheet写入文件的方法
Dec 10 Python
pyqt5利用pyqtDesigner实现登录界面
Mar 28 Python
Python玩转PDF的各种骚操作
May 06 Python
网易有道2017内推编程题 洗牌(python)
Jun 19 Python
解决Django migrate不能发现app.models的表问题
Aug 31 Python
Python实现隐马尔可夫模型的前向后向算法的示例代码
Dec 31 Python
Python 格式化打印json数据方法(展开状态)
Feb 27 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
日本收入最高的漫画家:海贼王作者版税年收入高达8.45亿元
2020/03/04 日漫
用IE远程创建Mysql数据库的简易程序
2006/10/09 PHP
php检查是否是ajax请求的方法
2015/04/16 PHP
PHP基于socket实现客户端和服务端通讯功能
2017/07/13 PHP
Laravel中服务提供者和门面模式的入门介绍
2017/11/06 PHP
(转载)JavaScript中匿名函数,函数直接量和闭包
2007/05/08 Javascript
各种效果的jquery ui(接口)介绍
2008/09/17 Javascript
jQuery给多个不同元素添加class样式的方法
2015/03/26 Javascript
jQuery中的Deferred和promise 的区别
2016/04/03 Javascript
js中获取时间new Date()的全面介绍
2016/06/20 Javascript
JS获取IE版本号与HTML设置IE文档模式的方法
2016/10/09 Javascript
浅谈Node.js:Buffer模块
2016/12/05 Javascript
xmlplus组件设计系列之按钮(2)
2017/04/26 Javascript
快速理解 JavaScript 中的 LHS 和 RHS 查询的用法
2017/08/24 Javascript
Node.js学习之查询字符串解析querystring详解
2017/09/28 Javascript
JavaScript中的 new 命令
2019/05/22 Javascript
JS根据json数组多个字段排序及json数组常用操作
2019/06/06 Javascript
Vue computed 计算属性代码实例
2020/04/22 Javascript
最大K个数问题的Python版解法总结
2016/06/16 Python
Django日志模块logging的配置详解
2017/02/14 Python
学习Python selenium自动化网页抓取器
2018/01/20 Python
python实现图像识别功能
2018/01/29 Python
Python pygorithm模块用法示例【常见算法测试】
2018/08/16 Python
pygame游戏之旅 载入小车图片、更新窗口
2018/11/20 Python
Laravel+Dingo/Api 自定义响应的实现
2019/02/17 Python
django 中QuerySet特性功能详解
2019/07/25 Python
python requests包的request()函数中的参数-params和data的区别介绍
2020/05/05 Python
HTML5移动端开发遇见的东西
2019/10/11 HTML / CSS
奥地利票务门户网站:oeticket.com
2019/12/31 全球购物
内业资料员岗位职责
2014/01/04 职场文书
服装设计师职业生涯规划范文
2014/02/28 职场文书
公司会计主管岗位责任制
2014/03/01 职场文书
初中毕业生的自我评价
2014/03/03 职场文书
满月酒主持词
2014/03/27 职场文书
2015年清明节网上祭英烈留言寄语
2015/03/04 职场文书
SpringBoot 拦截器妙用你真的了解吗
2021/07/01 Java/Android