gpt4 book ai didi

浅谈Python小波分析库Pywavelets的一点使用心得

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章浅谈Python小波分析库Pywavelets的一点使用心得由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

本文介绍了Python小波分析库Pywavelets,分享给大家,具体如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# -*- 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. ] 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#!/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层分解得到的低频信号.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.

原文链接:https://blog.csdn.net/elite666/article/details/80687529 。

最后此篇关于浅谈Python小波分析库Pywavelets的一点使用心得的文章就讲到这里了,如果你想了解更多关于浅谈Python小波分析库Pywavelets的一点使用心得的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com