信号的小波降噪 matlab仿真程序

标签:
杂谈 |
信号的小波降噪
matlab代写程序
小波分析的重要应用之一就是用于信号降噪。在此,简要地阐述一下小波分析对信号降噪的基本原理。
我们知道,一个含噪的一维信号模型可表示为如下形式:
其中, 为含噪信号, 为有用信号, 为噪声信号。这里我们认为 是一个1级高斯白噪声,通常表现为高频信号,而实际工程中通常为低频信号或者是一些比较平稳的信号。因此我们可按如下的方法进行降噪处理。
首先对信号进行小波分解,一般地,噪声信号多包含在具有较高频率的细节中,从而,可利用门限阀值等形式对所分解的小波系数进行出来,然后对信号进行小波重构即可达到对信号降噪的木的。对信号降噪实质上是一直信号中的无庸部分,恢复信号中有用部分的过程。
1.
在此,我们将噪声e看做普通信号分析以下它的相关性、频谱和频率分布这3个主要特征。
总体上,对于一维离散信号来说,其高频部分所影响的是小波分解的第一层细节,其低频部分所影响的小波分解的最深层和低频层。如果对一个仅由白噪声所组成的信号进行分析,则可得出这样的结论:高频系数的幅值随着分解层次的增加而迅速地衰减,且其方差也有同样的变化趋势。在这里用表示对噪声用小波分解后的系数,其中,j表示尺度,k表示时间,对离散时间信号引入如下的属性:
(1)
(2)
(3)
(4)
(5)
●
●
2.
一般而言,一维信号降噪的过程可分为如下3个步骤。
(1)
(2)
(3)
小波分析进行阀值处理一般有下述3种方法。
(1)
(2)
(3)
3.
下面用具体的例子来说明小波分析对信号的降噪作用。
%当前延拓模式是补零
%设置信噪比和随机数种子
snr=3;init=2055615866;
%产生原始信号,并叠加标准高斯白噪声
[xref,x]=wnoise(3,11,snr,init);
%对x使用sym8小波进行5层分解,得到高频系数。使用SURE阀值、软阀值进行降噪
lev=5;
xd=wden(x,'heursure','s','one',lev,'sym8');
figure(1);
set(gcf,'color','w');
%画出原始信号
subplot(311),plot(xref),axis([1 2048 -10 10]);
title('原始信号');
subplot(312),plot(x), axis([1 2048 -10 10]);
title(['降噪信号-信噪比为',num2str(fix(snr))]);
subplot(313),plot(xd), axis([1 2048 -10 10]);
title('降噪信号-heuristic SURE');
% 使用软SURE阀值降噪
xd=wden(x,'heursure','s','one',lev,'sym8');
%画出信号
figure(2);
set(gcf,'color','w');
subplot(311),plot(xd), axis([1 2048 -10 10]);
title('降噪信号-SURE');
% 对噪声标准差进行单层估计,使用fixed form 阀值降噪
xd=wden(x,'sqtwolog','s','sln',lev,'sym8');
% 画出信号
subplot(312),plot(xd), axis([1 2048 -10 10]);
title('降噪信号-Fixed form 阀值');
% 对噪声标准差进行单层估计,使用minimax 阀值降噪
xd=wden(x,'minimaxi','s','sln',lev,'sym8');
% 画出信号
subplot(313),plot(xd), axis([1 2048 -10 10]);
title('De-noised signal-Minimax');
% 如果需要多次尝试,最后是执行一次分解,多次设置阀值
% 分解
[c,l]=wavedec(x,lev,'sym8');
% 使用小波分解结构[c,l]设置阀值
xd=wden(c,l,' minimaxi','s','sln',lev,'sym8');
结果如图所示。
http://s10/bmiddle/5efd18a14c1dce4ec0b39&690matlab仿真程序" TITLE="信号的小波降噪
http://s3/bmiddle/5efd18a14c1dce5025752&690matlab仿真程序" TITLE="信号的小波降噪