改进小波阈值去噪(一)

文摘   2024-11-22 17:09   湖南  

小波阈值去噪的基本原理

小波阈值降噪是一种广泛使用的信号处理技术,其核心思想是通过小波变换将原始信号分解为多个不同尺度的分量,然后对每个分量进行阈值处理,将低于某个阈值的分量置为零,从而去除信号中的噪声。在具体应用中,阈值的选择至关重要,通常采用软阈值和硬阈值两种方法
软阈值方法会将小于阈值的系数按比例缩小,计算公式如下:
硬阈值方法则直接将其置为零,计算公式如下:

尽管小波阈值降噪方法在许多场景中表现优异,但它也存在一些局限性。例如,该方法对信号的局部特征较为敏感,可能导致信号边缘效果不佳;在某些情况下,降噪效果可能不够理想,处理效率也较低。因此,在实际应用中,需要根据信号的特点和降噪需求进行灵活选择和调整。为了克服这些局限性,本文参考文献提出了多种改进的小波阈值降噪方法,这些改进方法包括但不限于:

改进原理一

[1]孙万麟,王超.基于改进的软阈值小波包网络的电力信号消噪[J].海军工程大学学报,2019,31(04):79-82.
为了克服硬、软阈值在信号消噪中存在的不足,本文对软阈值函数进行了改进。将大于阈值的小波系数模值阈值化,变成该模值平方与阈值平方差的开方,而小于阈值的小波系数模值阈值仍为0,得到改进的软阈值函数表达式为:

图1改进后软阈值函数

代码效果图


部分核心代码

% 测试文件clc;clear;close all%% 1.生成仿真信号N=1000;Fs=1000;%%采样频率自己设置t=((0:N-1)*1/Fs)';f1=5;f2=30;y1=5*sin(2*pi*f1*t);y2=3*sin(2*pi*f2*t);y=y1+y2;SNR=10;rng(100);sig_noise = awgn(y,SNR,'measured');       %添加噪声%% 画图ylabel('\fontname{宋体}幅值');xlabel('\fontname{Times new roman}Frequency/\it{Hz}');subplot(221);plot(y,'k');title('\fontname{宋体}原始信号');ylabel('\fontname{宋体}幅值');xlabel('采样点数/n');subplot(222);pFFT(y,Fs);title('\fontname{宋体}频谱图');ylabel('\fontname{宋体}幅值');xlabel('\fontname{Times new roman}Frequency/\it{Hz}');subplot(223);plot(sig_noise,'k');title('\fontname{宋体}原始信号');ylabel('\fontname{宋体}幅值');xlabel('采样点数/n');subplot(224);pFFT(sig_noise,Fs);title('\fontname{宋体}频谱图');ylabel('\fontname{宋体}幅值');xlabel('\fontname{Times new roman}Frequency/\it{Hz}');%% 2.小波阈值去噪%%小波基函数的选择  %%分解层数的选择       %%阈值选择规则 %%小波基函数的选择:https://www.mathworks.cn/help/wavelet/ref/wfilters.html?searchHighlight=wname&s_tid=srchtitle_wname_2#d123e130597wname='db3';            lev=4;           tptr='heursure';  %'rigsure','heursure','sqtwolog','minimaxi'

下载链接:https://mbd.pub/o/bread/Z5iZmpht

或点击阅读原文获取代码



MATLAB科研小白
信号处理方向在校博士研究生,目前专研于MATLAB算法及科学绘图等,熟知各种信号分解算法、神经网络时序预测算法、数据拟合算法以及滤波算法。提供一个可以相互学习相互进步的平台
 最新文章