1 简介

为了有效消除信号中的噪声,提出一种改进小波阈值算法的信号去噪 方法.首先分析软阈值和硬阈值小波方法的优缺点,构造了一种任意阶可导的新阈值函数,然后通过调节参数的值来更好的获得阈值估计,最后在Matlab 2012平台对其去噪性能进行仿真测试.结果表明,相通于其它信号去噪方法,本文方法提高了信号的信噪比,降低了均方误差,达到了更好的消噪效果,具有更 高的实际应用价值.

【信号去噪】基于改进的阈值高斯脉冲信号去噪含Matlab源码_去噪

【信号去噪】基于改进的阈值高斯脉冲信号去噪含Matlab源码_信噪比_02

【信号去噪】基于改进的阈值高斯脉冲信号去噪含Matlab源码_去噪_03

2 部分代码

close all;
clc;
clear;
format short g;
Fs=50*128;
N=2048;
l=1;
n=[0:1:N-1];
[y,t]=Gauss1(N,8);
figure(1)
plot(t,y);
xlabel('时间(ns)');
ylabel('信号功率(pw)');
title('原始信号');
axis([0, N-1,0, 1.2]);
s=awgn(y,1,'measured');% 加入高斯白噪
figure(2)
plot(s);
xlabel(' 时间(ns)');
ylabel('信号功率(pw)');
title('污染信号');
axis([0, N-1,-0.5, 1.5]);
%%--------------- 阈值选取 -------------------------
%生成不同的阈值
th1=thselect(s,'sqtwolog');
th2=thselect(s,'rigrsure');
th3=thselect(s,'heursure');
th4=thselect(s,'minimaxi');
fprintf('通用阈值th1: %4.4f\n',th1);
fprintf('Stein无偏风险阈值th2: %4.4f\n',th2);
fprintf('启发式阈值th3: %4.4f\n',th3);
fprintf('最大最小准则阈值th4: %4.4f\n',th4);
%%%--------------- 不同小波函数对去噪效果的影响 -------------------------
sym=['sym1';'sym2';'sym3';'sym4';'sym5';'sym6';'sym7';'sym8'];
db=['db1';'db2';'db3';'db4';'db5';'db6';'db7';'db8'];
coif=['coif1';'coif2';'coif3';'coif4';'coif5'];
[zwave(1,1:4),snrwave(1),snrsym]=levelandth(y,s,sym,8);
[zwave(2,1:3),snrwave(2),snrdb]=levelandth(y,s,db,8);
[zwave(3,1:5),snrwave(3),snrcoif]=levelandth(y,s,coif,5);
ksym=1:8;
kdb=1:8;
kcoif=1:5;
figure(12)
plot(ksym,snrsym,'r-',kdb,snrdb,'g-',kcoif,snrcoif,'b-'),grid on;
legend('sym小波系','db小波系','coif小波系');
xlabel('小波基');
ylabel(' 信噪比改善量(dB)');
title('不同小波函数能达到的最大信噪比改善量');
[snrwavemax,kwaxw]=max(snrwave);
fprintf(zwave(kwaxw,:));
snrxn=snr(y,s);% 原加噪信号信噪比
fprintf(' 原加噪信号信噪比 %4.4f\n',snrxn);
snrxdh1=snr(y,xdh1);% 通用阈值硬阈值函数去噪信噪比
fprintf(' 通用阈值硬阈值函数去噪信噪比 %4.4f\n',snrxdh1);
snrxdh1=snr(y,xds1);% 通用阈值软阈值函数去噪信噪比
fprintf(' 通用阈值软阈值函数去噪信噪比 %4.4f\n',snrxdh1);
snrxdh2=snr(y,xdh2);% Stein无偏风险阈值硬阈值硬阈值函数去噪信噪比
fprintf(' Stein无偏风险阈值硬阈值函数去噪信噪比 %4.4f\n',snrxdh2);
snrxds2=snr(y,xds2);% Stein无偏风险阈值硬阈值软阈值函数去噪信噪比
fprintf(' Stein无偏风险阈值软阈值函数去噪信噪比 %4.4f\n',snrxds2);
snrxdh3=snr(y,xdh3);% 启发式阈值硬阈值函数去噪信噪比
fprintf(' 启发式阈值硬阈值函数去噪信噪比 %4.4f\n',snrxdh3);
snrxds3=snr(y,xds3);% 启发式阈值软阈值函数去噪信噪比
fprintf(' 启发式阈值软阈值函数去噪信噪比 %4.4f\n',snrxds3);
snrxdh4=snr(y,xdh4);% 最大最小准则阈值硬阈值函数去噪信噪比
fprintf(' 最大最小准则阈值硬阈值函数去噪信噪比 %4.4f\n',snrxdh4);
snrxds4=snr(y,xds4);% 最大最小准则阈值软阈值函数去噪信噪比
fprintf(' 最大最小准则阈值软阈值函数去噪信噪比 %4.4f\n',snrxds4);
snryh=snr(y,yh);% 改进的硬阈值去噪信号信噪比
fprintf(' 改进的硬阈值去噪信号信噪比 %4.4f\n',snryh);
snrys=snr(y,yhs);% 改进软阈值处理后的信噪比
fprintf(' 改进的软阈值处理后的信噪比 %4.4f\n',snrys);

3 仿真结果

【信号去噪】基于改进的阈值高斯脉冲信号去噪含Matlab源码_阈值处理_04

【信号去噪】基于改进的阈值高斯脉冲信号去噪含Matlab源码_信噪比_05

【信号去噪】基于改进的阈值高斯脉冲信号去噪含Matlab源码_去噪_06

【信号去噪】基于改进的阈值高斯脉冲信号去噪含Matlab源码_阈值处理_07

【信号去噪】基于改进的阈值高斯脉冲信号去噪含Matlab源码_信噪比_08

【信号去噪】基于改进的阈值高斯脉冲信号去噪含Matlab源码_信噪比_09

4 参考文献

[1]袁孟宇. 基于改进小波阈值法的动液面信号去噪研究[D]. 东北石油大学.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

【信号去噪】基于改进的阈值高斯脉冲信号去噪含Matlab源码_阈值处理_10