浅谈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线程详解
Jun 24 Python
Python实现读取txt文件并画三维图简单代码示例
Dec 09 Python
Python命令行解析模块详解
Feb 01 Python
python导入模块交叉引用的方法
Jan 19 Python
python实现Excel文件转换为TXT文件
Apr 28 Python
Django REST framework 如何实现内置访问频率控制
Jul 23 Python
Python使用APScheduler实现定时任务过程解析
Sep 11 Python
Django框架ORM数据库操作实例详解
Nov 07 Python
keras获得某一层或者某层权重的输出实例
Jan 24 Python
通过python调用adb命令对App进行性能测试方式
Apr 23 Python
keras K.function获取某层的输出操作
Jun 29 Python
python四个坐标点对图片区域最小外接矩形进行裁剪
Jun 04 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
绿山咖啡和蓝山咖啡
2021/03/04 新手入门
PHP 服务器配置(使用Apache及IIS两种方法)
2009/06/01 PHP
php上传apk后自动提取apk包信息的使用(示例下载)
2013/04/26 PHP
利用PHP实现一个简单的用户登记表示例
2017/04/25 PHP
PHP面向对象五大原则之开放-封闭原则(OCP)详解
2018/04/04 PHP
JavaScript 对象模型 执行模型
2009/12/06 Javascript
range 标准化之获取
2011/08/28 Javascript
JS操作Cookies包括(读取添加与删除)
2012/12/26 Javascript
jquery实现的网页自动播放声音
2014/04/30 Javascript
jQuery实现跨域iframe接口方法调用
2015/03/14 Javascript
JavaScript获取按钮所在form表单id的方法
2015/04/02 Javascript
MVVM模式中ViewModel和View、Model有什么区别?
2015/06/19 Javascript
关于JS中setTimeout()无法调用带参函数问题的解决方法
2016/06/21 Javascript
JS刷新父窗口的几种方式小结(推荐)
2016/11/09 Javascript
深入了解JavaScript的逻辑运算符(与、或)
2016/12/20 Javascript
Angular4学习教程之DOM属性绑定详解
2018/01/04 Javascript
vue中使用v-for时为什么不能用index作为key
2020/04/04 Javascript
Python中的闭包总结
2014/09/18 Python
Python简单实现TCP包发送十六进制数据的方法
2016/04/16 Python
Python自动化测试Eclipse+Pydev 搭建开发环境
2016/08/15 Python
Windows下anaconda安装第三方包的方法小结(tensorflow、gensim为例)
2018/04/05 Python
ubuntu 18.04 安装opencv3.4.5的教程(图解)
2019/11/04 Python
Python如何省略括号方法详解
2020/03/21 Python
python实现学生成绩测评系统
2020/06/22 Python
python 删除excel表格重复行,数据预处理操作
2020/07/06 Python
python 实时调取摄像头的示例代码
2020/11/25 Python
Python制作运行进度条的实现效果(代码运行不无聊)
2021/02/24 Python
Django项目在pycharm新建的步骤方法
2021/03/02 Python
墨尔本复古时尚品牌:Dangerfield
2018/12/12 全球购物
企业厂长岗位职责
2013/12/17 职场文书
蔬菜基地的创业计划书
2014/01/06 职场文书
高中生的自我评价
2014/03/04 职场文书
促销活动总结
2014/04/28 职场文书
主题班会演讲稿
2014/05/22 职场文书
消费者理赔投诉书
2015/07/02 职场文书
Python 线程池模块之多线程操作代码
2021/05/20 Python