浅谈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 django使用haystack:全文检索的框架(实例讲解)
Sep 27 Python
Python字典,函数,全局变量代码解析
Dec 18 Python
python深度优先搜索和广度优先搜索
Feb 07 Python
python 读取.csv文件数据到数组(矩阵)的实例讲解
Jun 14 Python
Python3多目标赋值及共享引用注意事项
May 27 Python
Python完成哈夫曼树编码过程及原理详解
Jul 29 Python
详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)
Aug 02 Python
Python中常见的导入方式总结
May 06 Python
pytorch 实现在测试的时候启用dropout
May 27 Python
OpenCV-Python实现轮廓拟合
Jun 08 Python
Python数据可视化之基于pyecharts实现的地理图表的绘制
Jun 10 Python
Python音乐爬虫完美绕过反爬
Aug 30 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设计模式之观察者模式(Observer)详细介绍和代码实例
2014/04/08 PHP
PHP 中魔术常量的实例详解
2017/10/26 PHP
Some tips of wmi scripting in jscript (1)
2007/04/03 Javascript
JavaScript Date对象 日期获取函数
2010/12/19 Javascript
能说明你的Javascript技术很烂的五个原因分析
2011/10/28 Javascript
jquery 延迟执行实例介绍
2013/08/20 Javascript
javascript相等运算符与等同运算符详细介绍
2013/11/09 Javascript
JavaScript实现按照指定长度为数字前面补零输出的方法
2015/03/19 Javascript
jQuery EasyUI API 中文帮助文档和扩展实例
2016/08/01 Javascript
Bootstrap缩略图的创建方法
2017/03/22 Javascript
Vue学习之路之登录注册实例代码
2017/07/06 Javascript
javascript 面向对象实战思想分享
2017/09/07 Javascript
基于JS实现html中placeholder属性提示文字效果示例
2018/04/19 Javascript
jQuery实现回到顶部效果
2020/10/19 jQuery
[03:04]DOTA2超级联赛专访ZSMJ “莫名其妙”的逆袭
2013/05/23 DOTA
[02:20]DOTA2中文配音宣传片
2013/05/22 DOTA
Python中强大的命令行库click入门教程
2016/12/26 Python
python编程测试电脑开启最大线程数实例代码
2018/02/09 Python
在pandas中一次性删除dataframe的多个列方法
2018/04/10 Python
Python如何爬取qq音乐歌词到本地
2020/06/01 Python
python 监控服务器是否有人远程登录(详细思路+代码)
2020/12/18 Python
详解css3 mask遮罩实现一些特效
2018/10/24 HTML / CSS
美国在线鲜花速递:ProFlowers
2017/01/05 全球购物
全球领先的美容用品专卖店:Beauty Plus Salon
2018/09/04 全球购物
美国电子产品主要品牌的授权在线零售商:DataVision
2019/03/23 全球购物
StubHub中国:购买和出售全球活动门票
2020/01/01 全球购物
State Cashmere官网:半零售价可持续蒙古羊绒
2020/02/26 全球购物
通信工程专业女生个人求职信
2013/09/21 职场文书
我的五年职业生涯规划
2014/01/23 职场文书
2014年小学生迎国庆65周年演讲稿
2014/09/27 职场文书
十八大标语口号
2014/10/09 职场文书
2014年体育教学工作总结
2014/12/09 职场文书
农民工工资保障承诺书
2015/05/04 职场文书
幼儿园亲子活动感想
2015/08/07 职场文书
《传颂之物 虚伪的假面》BD发售宣传CM公开
2022/04/04 日漫
MySQL数据库中的锁、解锁以及删除事务
2022/05/06 MySQL