浅谈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中while循环语句用法简单实例
May 07 Python
对pandas将dataframe中某列按照条件赋值的实例讲解
Nov 29 Python
浅谈python requests 的put, post 请求参数的问题
Jan 02 Python
python版百度语音识别功能
Jul 09 Python
在Python中使用MySQL--PyMySQL的基本使用方法
Nov 19 Python
Python如何获取Win7,Win10系统缩放大小
Jan 10 Python
Python学习之路之pycharm的第一个项目搭建过程
Jun 18 Python
Python如何将字符串转换为日期
Jul 31 Python
python开发一款翻译工具
Oct 10 Python
Django celery异步任务实现代码示例
Nov 26 Python
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
Apr 06 Python
django 认证类配置实现
Nov 11 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使用者状态管理功能的应用
2006/10/09 PHP
PHP4实际应用经验篇(2)
2006/10/09 PHP
献给php初学者(入门学习经验谈)
2010/10/12 PHP
php入门学习知识点六 PHP文件的读写操作代码
2011/07/14 PHP
php获取、检查类名、函数名、方法名的函数方法
2015/06/25 PHP
Laravel框架实现超简单的分页效果示例
2019/02/08 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
javascript 获取表单file全路径
2009/12/31 Javascript
浅谈JS中逗号运算符的用法
2016/06/12 Javascript
微信小程序-拍照或选择图片并上传文件
2017/01/06 Javascript
js实现自动轮换选项卡
2017/01/13 Javascript
Node.js 使用流实现读写同步边读边写功能
2017/09/11 Javascript
详解React Native 采用Fetch方式发送跨域POST请求
2017/11/15 Javascript
form表单数据封装成json格式并提交给服务器的实现方法
2017/12/14 Javascript
jQuery中ajax获取数据赋值给页面的实例
2017/12/31 jQuery
countUp.js实现数字动态变化效果
2019/10/17 Javascript
详解三种方式在React中解决绑定this的作用域问题并传参
2020/08/18 Javascript
Python 删除连续出现的指定字符的实例
2018/06/29 Python
pycharm远程开发项目的实现步骤
2019/01/20 Python
详解Python使用Plotly绘图工具,绘制甘特图
2019/04/02 Python
Python实现Mysql数据统计及numpy统计函数
2019/07/15 Python
使用PyOpenGL绘制三维坐标系实例
2019/12/24 Python
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
2020/05/16 Python
关于python中导入文件到list的问题
2020/10/31 Python
英国高级百货公司:Harvey Nichols
2017/01/29 全球购物
澳大利亚游乐场设备品牌:Lifespan Kids
2019/05/24 全球购物
init进程的作用
2012/04/12 面试题
咖啡书吧创业计划书
2014/01/13 职场文书
创建市级文明单位实施方案
2014/03/01 职场文书
本科应届生自荐信
2014/06/29 职场文书
志愿者爱心公益活动策划方案
2014/09/15 职场文书
北京英语导游词
2015/02/12 职场文书
小学推普周活动总结
2015/05/07 职场文书
摘录式读书笔记
2015/07/01 职场文书
python数字类型和占位符详情
2022/03/13 Python
MySQL 数据表操作
2022/05/04 MySQL