浅谈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中zip()函数用法实例教程
Jul 31 Python
python获取文件版本信息、公司名和产品名的方法
Oct 05 Python
python通过ftplib登录到ftp服务器的方法
May 08 Python
判断网页编码的方法python版
Aug 12 Python
python简单线程和协程学习心得(分享)
Jun 14 Python
基于Python对象引用、可变性和垃圾回收详解
Aug 21 Python
Python使用functools实现注解同步方法
Feb 06 Python
Python求两个圆的交点坐标或三个圆的交点坐标方法
Nov 07 Python
python 调用有道api接口的方法
Jan 03 Python
Python实现点云投影到平面显示
Jan 18 Python
python 实现人和电脑猜拳的示例代码
Mar 02 Python
 Python 中 logging 模块使用详情
Mar 03 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
一键删除顽固的空文件夹 软件下载
2007/01/26 PHP
php封装好的人民币数值转中文大写类
2015/12/20 PHP
javascript实现漂亮的拖动层,窗口拖拽特效
2015/04/24 Javascript
JavaScript中使用Math.floor()方法对数字取整
2015/06/15 Javascript
Node.js与Sails ~项目结构与Mvc实现及日志机制
2015/10/14 Javascript
第三章之Bootstrap 表格与按钮功能
2016/04/25 Javascript
jquery过滤特殊字符',防sql注入的实现方法
2016/08/17 Javascript
微信小程序购物商城系统开发系列-工具篇的介绍
2016/11/21 Javascript
JavaScrpt的面向对象全面解析
2017/05/09 Javascript
ES6新增数据结构WeakSet的用法详解
2017/08/07 Javascript
详解在React里使用"Vuex"
2018/04/02 Javascript
node.js调用C++函数的方法示例
2018/09/21 Javascript
VUE 配置vue-devtools调试工具及安装方法
2018/09/30 Javascript
JS中类的静态方法,静态变量,实例方法,实例变量区别与用法实例分析
2020/03/14 Javascript
Vue数据双向绑定原理实例解析
2020/05/15 Javascript
vue 导航菜单刷新状态不消失,显示对应的路由界面操作
2020/08/06 Javascript
token 机制和实现方式
2020/12/15 Javascript
python简单程序读取串口信息的方法
2015/03/13 Python
让python在hadoop上跑起来
2016/01/27 Python
Django管理员账号和密码忘记的完美解决方法
2018/12/06 Python
Python Opencv提取图片中某种颜色组成的图形的方法
2019/09/19 Python
捷克体育用品购物网站:D-sport
2017/12/28 全球购物
手工制作的意大利太阳镜和光学元件:Illesteva
2019/01/19 全球购物
阿姆斯特丹杜莎夫人蜡像馆官方网站:Madame Tussauds Amsterdam
2019/03/12 全球购物
俄罗斯在线水暖商店:Perfecto.ru
2019/10/25 全球购物
Jowissa官方网站:瑞士制造的手表,优雅简约的设计
2020/07/29 全球购物
团队激励口号
2014/06/06 职场文书
欢迎领导标语
2014/06/27 职场文书
夏季药店促销方案
2014/08/22 职场文书
我们的节日重阳节活动总结
2015/03/24 职场文书
2015年社区党务工作总结
2015/04/21 职场文书
民间借贷借条范本
2015/05/25 职场文书
浅谈pytorch中stack和cat的及to_tensor的坑
2021/05/20 Python
Python实现机器学习算法的分类
2021/06/03 Python
详解Python描述符的工作原理
2021/06/11 Python
python 离散点图画法的实现
2022/04/01 Python