采用自适应小波阈值滤波抑制高频噪声干扰[简例]

基本原理:分解+重构。小波分解是将原始信号通过一系列的低通和高通滤波器进行处理,把信号分解成不同尺度下的近似系数和细节系数。而小波重构则是分解的逆过程,它利用这些分解得到的系数,通过相应的低通和高通滤波器的逆变换,将系数重新组合还原成原始信号。

关键库:pywt 是 PyWavelets 库的别名,它是一个用于在 Python 中进行小波变换的开源库。小波变换是一种数学工具,类似于傅里叶变换,用于将信号分解成不同频率的成分。与傅里叶变换不同的是,小波变换能够同时提供信号的时间和频率信息,因此在信号处理、图像处理、数据分析等领域有着广泛的应用。

代码功能:利用自适应小波阈值滤波抑制正弦信号中的高频噪声。先生成含噪声的正弦信号,接着用 pywt.wavedec 进行小波分解得到各级系数,对细节系数自适应计算阈值并软阈值处理,再用 pywt.waverec 重构信号,最后绘图展示原始、含噪及去噪信号。

数据结构管理:代码中主要使用了 numpy 数组和 Python 列表。numpy 数组用于存储信号数据,如原始正弦信号、添加噪声后的信号以及重构后的信号。Python 列表 coeffs 和 new_coeffs 用于存储小波分解和处理后的系数。coeffs 存储多级分解得到的近似系数和细节系数,new_coeffs 存储经过自适应阈值处理后的系数。最后,基于 new_coeffs 列表中的系数和 numpy 数组的运算,使用 pywt.waverec 完成信号重构。

import pywt
import numpy as np
import matplotlib.pyplot as plt

# 生成正弦信号
t = np.linspace(0, 1, 1000)
signal = np.sin(2 * np.pi * 5 * t)  # 5Hz 正弦信号

# 添加高斯噪声
noise = np.random.normal(0, 0.5, signal.shape)
noisy_signal = signal + noise

# 小波分解
wavelet = 'db4'  # 选择小波基
level = 5  # 分解级别
coeffs = pywt.wavedec(noisy_signal, wavelet, level=level)

# 自适应阈值计算和软阈值处理
new_coeffs = []
for i, coeff in enumerate(coeffs):
    if i == 0:  # 近似系数不进行阈值处理
        new_coeffs.append(coeff)
    else:
        # 计算自适应阈值
        sigma = np.median(np.abs(coeff)) / 0.6745
        threshold = sigma * np.sqrt(2 * np.log(len(coeff)))
        # 软阈值处理
        new_coeff = pywt.threshold(coeff, threshold, mode='soft')
        new_coeffs.append(new_coeff)

# 小波重构
denoised_signal = pywt.waverec(new_coeffs, wavelet)

# 绘制结果
plt.figure(figsize=(12, 8))
plt.subplot(3, 1, 1)
plt.plot(t, signal, label='原始信号')
plt.title('原始信号')
plt.legend()

plt.subplot(3, 1, 2)
plt.plot(t, noisy_signal, label='带噪声的信号', color='orange')
plt.title('带噪声的信号')
plt.legend()

plt.subplot(3, 1, 3)
plt.plot(t, denoised_signal, label='去噪后的信号', color='green')
plt.title('去噪后的信号')
plt.legend()

plt.tight_layout()
plt.show()

 输出结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值