改进小波阈值去噪(二)

文摘   2024-11-23 21:04   湖南  

  小波阈值去噪的基本原理  

波阈值降噪是一种广泛使用的信号处理技术,其核心思想是通过小波变换将原始信号分解为多个不同尺度的分量,然后对每个分量进行阈值处理,将低于某个阈值的分量置为零,从而去除信号中的噪声。


    改进原理二    

[1]刘冲,马立修,潘金凤,等.联合VMD与改进小波阈值的局放信号去噪[J].现代电子技术,2021,44(21):45


传统的小波阈值函数有两种:其中硬阈值函数ρ(ω)在ω=α处是间断的;而软阈值函数连续性比较好,使用这两种阈值函数都会不可避免地产生震荡现象,这样重构出来的信号必然会出现偏差。为改善上述两种传统阈值函数的不足,提出改进的阈值函数如下:

改进后软阈值函数
     代码效果图     

     部分核心代码     

% 测试文件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'option=[];SORH={'h','s','a2'};for i=1:length(SORH)WT_sig{i}=IWTD(sig_noise,wname,SORH{i},lev,tptr,option);  %调用函数进行滤波endfigure('color','w');set(gcf, 'Position', [400 300 500 500]);subplot(2,2,1);plot(sig_noise,'k'); title('\fontname{宋体}加噪后信号');ylabel('幅值');xlabel('采样点数/n');Name={'硬阈值小波去噪','软阈值小波去噪','改进阈值函数小波去噪'};for i=1:length(SORH)    subplot(2,2,i+1);plot(WT_sig{i});    ylabel('\fontname{宋体}幅值');xlabel('采样点数/n');title(Name{i});endSimulate_Signal=y;for i=1:length(SORH)[~,RMSE,RMS,MAE,SNR,~,cross_core,R,SER,NM,~,BIAS]=evaluate_denoising_metrics(Simulate_Signal,WT_sig{i});disp(['---------------------------------',SORH{i},'小波的去噪的指标----------------------------------']);disp(['均方根误差RMSE=',num2str(RMSE),'均方根值RMS=',num2str(RMS),',平均绝对值误差MAE=',num2str(MAE),',信噪比SNR=',num2str(SNR),',互相关系数cc=',num2str(cross_core),'平滑度指标R=',num2str(R),',信号能量比SER=',num2str(SER),',噪声的模NM=',num2str(NM),',信号偏差BIAS=',num2str(BIAS)]);end
下载链接:https://mbd.pub/o/bread/mbd-Z5iZm5dt
或点击阅读原文获取代码

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