Pywavelets库怎么在Python中使用
发表于:2022-08-11 作者:安全数据网编辑
编辑最后更新 2022年08月11日,这篇文章将为大家详细讲解有关Pywavelets库怎么在Python中使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。具体如下:# -*- codi
这篇文章将为大家详细讲解有关Pywavelets库怎么在Python中使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
具体如下:
# -*- coding: utf-8 -*- import numpy as npimport mathimport matplotlib.pyplot as pltimport pandas as pdimport datetime from scipy import interpolatefrom pandas import DataFrame,Seriesimport 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 npimport matplotlib.pyplot as pltimport pywtimport pywt.dataecg = 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.smoothdef 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
将数据序列进行小波分解,每一层分解的结果是上次分解得到的低频信号再分解成低频和高频两个部分。如此进过N层分解后源信号X被分解为:X = D1 + D2 + … + DN + AN 其中D1,D2,…,DN分别为第一层、第二层到等N层分解得到的高频信号,AN为第N层分解得到的低频信号。
关于Pywavelets库怎么在Python中使用就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
c语言网络技术和编程语言总结
c语言对应的三级考试网络技术
网站服务器后台如何加防护密码
c语言软件开发步骤
c语言中网络技术知识点
服务器对权限提升的防护措施
怎么在阿里云租服务器
黑苹果能做web服务器吗
c语言和网络技术哪个好考
云服务器2核4G是什么性能
手机怎样设置添加服务器
软件开发销售流程管理
吉视传媒有软件开发吗
软件开发专业女生就业方向
传奇战场服务器怎么设置
四川企业软件开发公司
腾讯云服务器安全组在哪里找
无锡营销网络技术咨询热线
网络安全对我国国防
江西服务器机柜哪种好
苏州拔俗网络技术有限公司
福州市路洋互联网科技
盐城软件开发学习
重庆做app的软件开发多少钱
九州网络安全教育
对数据库的基本操作有哪些
vfp病例数据库
数学数据库原理
南通手机应用软件开发
湛江市网络安全资讯
机械手软件开发系统
三丰云数据库怎么升级
苹果电脑如何登入云服务器
idc管理系统服务器软件
企业工资报表怎么写数据库
手机学习软件开发
日照鲁西西互联网科技有限公司
内蒙古网络安全等级保护
快鱼网络技术股份
服务器管理员给权限