学做标书网站,中信建设有限责任公司官网招聘信息,传媒公司网站模板,公司做二手网站的用意小波去噪可以想象成使用一把“筛子”来过滤信号。这个“筛子”能够根据信号的不同频率成分#xff0c;将其分解成多个层次。在这个过程中#xff0c;信号的重要信息通常包含在低频部分#xff0c;而噪声则多分布在高频部分。 将信号通过这个“筛子”分解后#xff0c;我们可… 小波去噪可以想象成使用一把“筛子”来过滤信号。这个“筛子”能够根据信号的不同频率成分将其分解成多个层次。在这个过程中信号的重要信息通常包含在低频部分而噪声则多分布在高频部分。 将信号通过这个“筛子”分解后我们可以对那些包含噪声的高频部分进行“削弱”或“切除”然后再将剩下的部分重新组合起来。这样经过处理的信号就会保留下重要的信息同时去除了很多噪声。
一、数学原理详解
小波变换通过一系列可缩放尺度变化和平移的基函数来表示信号。这些基函数称为小波函数。
小波函数 具有一定的时间长度并集中在频率上可以通过缩放dilation和平移translation来拟合信号的不同部分 其中 a 是尺度参数b 是平移参数。
分解:
信号f(t)可以通过小波函数的线性组合来分解 其中是小波系数。
在实际操作中通过离散小波变换DWT我们可以得到信号在不同尺度和位置的小波系数。
去噪
小波去噪的步骤通常包括 选择小波基选择一个适当的小波函数比如Daubechies小波。 多尺度分解将信号进行多层分解得到不同尺度上的小波系数。 阈值处理对小波系数应用阈值规则。系数小于某个阈值的被视为噪声并设置为零或减小其值。阈值的选择是一个关键步骤常用的方法有软阈值和硬阈值。软阈值方法会对系数进行收缩而硬阈值方法会直接将小于阈值的系数置为零。 硬阈值: 软阈值: 其中是分解得到的小波系数是阈值是处理后的小波系数。 重构信号使用阈值处理后的小波系数重构信号这样得到的信号中噪声就会被减少。
二、Python代码实现
import matplotlib.pyplot as plt
import pywt
import seaborn as snssns.set(contextnotebook, styledarkgrid, palettedeep, fontsans-serif, font_scale1, color_codesFalse, rcNone)
plt.rcParams[axes.unicode_minus] False # 防止坐标为负时出现乱码
ecg [......] # 改成自己的数据index []
data []
for i in range(len(ecg) - 1):X float(i)Y float(ecg[i])index.append(X)data.append(Y)# Create wavelet object and define parameters
w pywt.Wavelet(db4) # 选用Daubechies4小波maxlev pywt.dwt_max_level(len(data), w.dec_len)
print(maximum level is str(maxlev))
# threshold 0.04 # Threshold for filtering
threshold 0.08
# Decompose into wavelet components, to the level selected:
coeffs pywt.wavedec(data, db4, levelmaxlev) # 将信号进行小波分解plt.figure()
for i in range(1, len(coeffs)):coeffs[i] pywt.threshold(coeffs[i], threshold * max(coeffs[i])) # 将噪声滤波datarec pywt.waverec(coeffs, db4) # 将信号进行小波重构mintime 0
maxtime mintime len(data) 1# plt.xkcd() # 胆小勿入
# plt.figure()
plt.subplot(2, 1, 1)
plt.plot(index[mintime:maxtime], data[mintime:maxtime], linewidth1.1, colorr)
plt.xlabel(time (s))
plt.ylabel(microvolts (uV))
plt.title(Raw signal)
plt.subplot(2, 1, 2)
plt.plot(index[mintime:maxtime], datarec[mintime:maxtime - 1], linewidth1.1, colorr)
plt.xlabel(time (s))
plt.ylabel(microvolts (uV))
plt.title(De-noised signal using wavelet techniques)plt.tight_layout()
plt.show()
三、结果展示