本人是python小白,刚刚开始学习,记录一下自己的学习成果,以免将来忘记
小波阈值降噪分为这么几步:
1.小波分解:
①小波基的选择
②分解尺度的选择
2.阈值处理:
①阈值获取
②阈值函数选择
3.小波重构
具体的小波阈值降噪原理不再赘述,网上有很多大佬讲解的很清楚,这里直接上代码,算是记录一下自己的学习成果。
#需要导入matplotlib.pyplot ,pywt, numpy 和pandas模块。
import matplotlib.pyplot as plt
import pywt
import numpy as np
import pandas as pd
xy=pd.read_csv('D:/SYYD.CSV') #读取CSV文件
s=[]
for each in xy['C1 in V']:
s.append(each)
#将需要的数据保存在列表s中
w=pywt.wavedec(s, 'sym7',level=6)#小波分解,pywt.wavedec(数据, 小波基,分解尺度)
### 分解得到的w是一个列表,w[0]是最大尺度的近似系数,w[1]是最大尺度的细节系数,w[2]是次大尺度的细节系数,以此类推
N=len(s)
thr=round(np.sqrt(2*np.log(N)),4)#阈值获取,方式为sqtwolog
for i in range(1,len(w)):
w[i]=pywt.threshold(w[i], thr,mode='soft')
#阈值处理函数
rec_s=pywt.waverec(w, 'sym7')#小波重构
plt.subplot(211)
plt.plot(s,linewidth=0.5)
plt.subplot(212)
plt.plot(rec_s,linewidth=0.5)
plt.show()