浅谈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绘图方法实例入门
May 19 Python
详解Python中的文件操作
Aug 28 Python
TensorFlow模型保存/载入的两种方法
Mar 08 Python
pandas or sql计算前后两行数据间的增值方法
Apr 20 Python
解决Python print 输出文本显示 gbk 编码错误问题
Jul 13 Python
Python实现拷贝/删除文件夹的方法详解
Aug 29 Python
Python字符串匹配之6种方法的使用详解
Apr 08 Python
Python分割训练集和测试集的方法示例
Sep 19 Python
python计算Content-MD5并获取文件的Content-MD5值方式
Apr 03 Python
python爬虫基础知识点整理
Jun 02 Python
pycharm导入源码的具体步骤
Aug 04 Python
python matlab库简单用法讲解
Dec 31 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
PHP 数据结构 算法描述 冒泡排序 bubble sort
2011/07/10 PHP
PHP数据库调用类调用实例(详细注释)
2012/07/12 PHP
redis+php实现微博(三)微博列表功能详解
2019/09/23 PHP
“不能执行已释放的Script代码”错误的原因及解决办法
2007/09/09 Javascript
JavaScript 数组循环引起的思考
2010/01/01 Javascript
JavaScript移除数组内重复元素的方法
2015/03/18 Javascript
web前端开发JQuery常用实例代码片段(50个)
2015/08/28 Javascript
smartcrop.js智能图片裁剪库
2015/10/14 Javascript
全面了解JS中的匿名函数
2016/06/29 Javascript
关于ES6的六个小特性(二)
2017/02/20 Javascript
vue拦截器Vue.http.interceptors.push使用详解
2017/04/22 Javascript
JQuery通过后台获取数据遍历到前台的方法
2018/08/13 jQuery
JavaScript的级联函数用法简单示例【链式调用】
2019/03/26 Javascript
vue项目中仿element-ui弹框效果的实例代码
2019/04/22 Javascript
微信小程序页面调用自定义组件内的事件详解
2019/09/12 Javascript
JavaScript 禁止用户保存图片的实现代码
2020/04/28 Javascript
VUE Elemen-ui之穿梭框使用方法详解
2021/01/19 Javascript
Vue实现购物小球抛物线的方法实例
2020/11/22 Vue.js
使用graphics.py实现2048小游戏
2015/03/10 Python
让Django支持Sql Server作后端数据库的方法
2018/05/29 Python
Python单元测试unittest的具体使用示例
2018/12/17 Python
对Python捕获控制台输出流的方法详解
2019/01/07 Python
python 实现Requests发送带cookies的请求
2021/02/08 Python
利用css3径向渐变做一张优惠券的示例
2018/03/22 HTML / CSS
纯CSS3+DIV实现小三角形边框效果的示例代码
2020/08/03 HTML / CSS
html5+css如何实现中间大两头小的轮播效果
2018/12/06 HTML / CSS
关于HTML5+ API plusready的兼容问题
2020/11/20 HTML / CSS
寻找完美的房车租赁:RVShare
2019/02/23 全球购物
留学顾问岗位职责
2014/04/14 职场文书
农业开发项目建议书
2014/05/16 职场文书
优秀团队申报材料
2014/12/26 职场文书
个人求职意向书
2015/05/11 职场文书
行政处罚告知书
2015/07/01 职场文书
小学班主任工作随笔
2015/08/15 职场文书
教你使用pyinstaller打包Python教程
2021/05/27 Python
Python OpenCV超详细讲解读取图像视频和网络摄像头
2022/04/02 Python