浅谈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 22 Python
Python模块搜索概念介绍及模块安装方法介绍
Jun 03 Python
浅谈python内置变量-reversed(seq)
Jun 21 Python
pandas创建新Dataframe并添加多行的实例
Apr 08 Python
python与caffe改变通道顺序的方法
Aug 04 Python
python多进程使用及线程池的使用方法代码详解
Oct 24 Python
pytorch三层全连接层实现手写字母识别方式
Jan 14 Python
Python range与enumerate函数区别解析
Feb 28 Python
对Matlab中共轭、转置和共轭装置的区别说明
May 11 Python
Python实现LR1文法的完整实例代码
Oct 25 Python
Pycharm操作Git及GitHub的步骤详解
Oct 27 Python
python基础之while循环语句的使用
Apr 20 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中DOMDocument简单用法示例代码(XML创建、添加、删除、修改)
2010/12/19 PHP
PHP实现的MongoDB数据库操作类分享
2014/05/12 PHP
PHP设计模式之简单工厂和工厂模式实例分析
2019/03/25 PHP
PHP 实现文件压缩解压操作的方法
2019/06/14 PHP
jQuery each()小议
2010/03/18 Javascript
js报错 Object doesn't support this property or method的原因分析
2011/03/31 Javascript
js 第二代身份证号码的验证机制代码
2011/05/12 Javascript
jQuery 源码分析笔记(6) jQuery.data
2011/06/08 Javascript
javascript中常用编程知识
2013/04/08 Javascript
Jquery同辈元素选中/未选中效果的实例代码
2013/08/01 Javascript
JS 操作Array数组的方法及属性实例解析
2014/01/08 Javascript
jquery库文件略庞大用纯js替换jquery的方法
2014/08/12 Javascript
js兼容火狐显示上传图片预览效果的方法
2015/05/21 Javascript
jquery实现一个简单的表单验证实例
2016/03/30 Javascript
jQuery轻松实现表格的隔行变色和点击行变色的实例代码
2016/05/09 Javascript
JS中的==运算: [''] == false —>true
2016/07/24 Javascript
支持移动端原生js轮播图
2017/02/16 Javascript
Vue实现双向数据绑定
2017/05/03 Javascript
浅谈angular4.0中路由传递参数、获取参数最nice的写法
2018/03/12 Javascript
JS 自执行函数原理及用法
2019/08/05 Javascript
python实现dnspod自动更新dns解析的方法
2014/02/14 Python
Python计算程序运行时间的方法
2014/12/13 Python
python自动重试第三方包retrying模块的方法
2018/04/24 Python
python使用matplotlib画饼状图
2018/09/25 Python
python判断计算机是否有网络连接的实例
2018/12/15 Python
python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例
2019/06/17 Python
python误差棒图errorbar()函数实例解析
2020/02/11 Python
Python 实现使用空值进行赋值 None
2020/03/12 Python
Python startswith()和endswith() 方法原理解析
2020/04/28 Python
css3翻牌翻数字的示例代码
2020/02/07 HTML / CSS
HTML5语义化元素你真的用对了吗
2019/08/22 HTML / CSS
银行自荐信范文
2013/10/07 职场文书
拓展训练激励口号
2014/06/17 职场文书
市场部岗位职责
2015/02/12 职场文书
通用员工手册范本
2015/05/14 职场文书
忆童年!用Python实现愤怒的小鸟游戏
2021/06/07 Python