浅谈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 开发Activex组件方法
Nov 08 Python
使用IPython下的Net-SNMP来管理类UNIX系统的教程
Apr 15 Python
python list排序的两种方法及实例讲解
Mar 20 Python
使用Kivy将python程序打包为apk文件
Jul 29 Python
python 同时运行多个程序的实例
Jan 07 Python
python 切换root 执行命令的方法
Jan 19 Python
Python装饰器原理与基本用法分析
Jan 07 Python
Python面向对象中类(class)的简单理解与用法分析
Feb 21 Python
python数据预处理 :数据共线性处理详解
Feb 24 Python
python GUI库图形界面开发之PyQt5控件QTableWidget详细使用方法与属性
Feb 25 Python
opencv实现图像平移效果
Mar 24 Python
Python中的套接字编程是什么?
Jun 21 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核心代码分析require和include的区别
2011/01/02 PHP
php表单提交问题的解决方法
2011/04/12 PHP
初识Laravel
2014/10/30 PHP
PHP单例模式定义与使用实例详解
2017/02/06 PHP
php生成短网址/短链接原理和用法实例分析
2020/05/29 PHP
javascript 限制输入脚本大全
2009/11/03 Javascript
prettify 代码高亮着色器google出品
2010/12/28 Javascript
Js注册协议倒计时的小例子
2013/06/24 Javascript
js 单击式的下拉菜单效果实例
2013/08/13 Javascript
js淡入淡出焦点图幻灯片效果代码分享
2015/09/08 Javascript
JS设置下拉列表框当前所选值的方法
2015/12/22 Javascript
javascript结合Flexbox简单实现滑动拼图游戏
2016/02/18 Javascript
玩转JavaScript OOP - 类的实现详解
2016/06/08 Javascript
Ionic2调用本地SQlite实例
2017/04/22 Javascript
Angular中实现树形结构视图实例代码
2017/05/05 Javascript
不使用JavaScript实现菜单的打开和关闭效果demo
2018/05/01 Javascript
Vue.js 使用v-cloak后仍显示变量的解决方法
2018/11/19 Javascript
ES6 迭代器与可迭代对象的实现
2019/02/11 Javascript
Vue自定义全局弹窗组件操作
2020/08/11 Javascript
vue radio单选框,获取当前项(每一项)的value值操作
2020/09/10 Javascript
[06:13]DOTA2进化论(修改版)
2013/10/08 DOTA
python中元类用法实例
2014/10/10 Python
Python实现将一个大文件按段落分隔为多个小文件的简单操作方法
2017/04/17 Python
python实现txt文件格式转换为arff格式
2018/05/31 Python
利用Python如何实现一个小说网站雏形
2018/11/23 Python
解决Python安装时报缺少DLL问题【两种解决方法】
2019/07/15 Python
浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方法
2019/10/25 Python
如何更改 pandas dataframe 中两列的位置
2019/12/27 Python
基于django 的orm中非主键自增的实现方式
2020/05/18 Python
Python 为什么推荐蛇形命名法原因浅析
2020/06/18 Python
python中watchdog文件监控与检测上传功能
2020/10/30 Python
python安装及变量名介绍详解
2020/12/12 Python
高档奢华时装在线目的地:FORWARD by elyse walker
2017/10/16 全球购物
绿色美容,有机护肤品和化妆品:Safe & Chic
2018/10/29 全球购物
美国健康和保健平台:healtop
2020/07/02 全球购物
Python - 10行代码集2000张美女图
2021/05/23 Python