信号的小波降噪
小波分析的重要应用之一就是用于信号降噪。在此,简要地阐述一下小波分析对信号降
噪的基本原理。
我们知道,一个含噪的一维信号模型可表示为如下形式:
)(
ks
)(
kf
(
),
kke
,1,0
,
n
1
其中, )(ks 为含噪信号,
)(kf 为有用信号, )(ke 为噪声信号。这里我们认为 )(ke 是一个
1 级高斯白噪声,通常表现为高频信号,而实际工程中
)(kf 通常为低频信号或者是一些比
较平稳的信号。因此我们可按如下的方法进行降噪处理。
首先对信号进行小波分解,一般地,噪声信号多包含在具有较高频率的细节中,从而,
可利用门限阀值等形式对所分解的小波系数进行出来,然后对信号进行小波重构即可达到对
信号降噪的木的。对信号降噪实质上是一直信号中的无庸部分,恢复信号中有用部分的过程。
1. 噪声在小波分解下的特性
在此,我们将噪声 e 看做普通信号分析以下它的相关性、频谱和频率分布这 3 个主要特
征。
总体上,对于一维离散信号来说,其高频部分所影响的是小波分解的第一层细节,其低
频部分所影响的小波分解的最深层和低频层。如果对一个仅由白噪声所组成的信号进行分
析,则可得出这样的结论:高频系数的幅值随着分解层次的增加而迅速地衰减,且其方差也
有同样的变化趋势。在这里用
),(
kjC
表示对噪声用小波分解后的系数,其中,j 表示尺度,
k 表示时间,对离散时间信号引入如下的属性:
(1) 如果 e 是一个平稳、零均值的白噪声,那么它的小波分解系数是相互独立的。
(2) 如果 e 是一个高斯型噪声,那么其小波分解系数是互不相关的,且服从高斯分
布。
(3) 如果 e 是一个平稳、有色、零均值的高斯型噪声序列,那么他的小拨分解系数
也是高斯序列,并且对每一个分解尺度 j,其相应的系数是一个平稳、有色的
序列。如何选择对分解系数具有解相关性的小波是一个很困难的问题,在目前
也没有得到很好的解决。进一步需指出,即使存在一个小波,但是它对噪声的
解相关性取决于噪声的有色性,为了用小波计算噪声的解相关性,必须知道噪
声本身的颜色。
(4) 如果 e 是一个固定的零均值 ARMA 模型,那么对每一个小波分解尺度 j,
,(
kjC
(),
k
也是固定的零均值 ARMA 模型,且其特性取决于尺度 j。
z
)
(5) 如果 e 是一个噪声:
● 若其相关函数已知,则可计算系数序列
),(
kjC
和
,(
kjC
;
)
● 若其相关函数谱已知,则可计算
,(
kjC
(),
k
的谱及尺度 j 和 j 的交叉谱。
z
)
2. 小波降噪的步骤和方法
一般而言,一维信号降噪的过程可分为如下 3 个步骤。
(1) 信号的小波分解。选择一个小波并确实分解的层次,然后进行分解计算。
(2) 小波分解高频系数的阀值量化。对各个分解尺度下的高频系数选择一个阀值进
行软阀值量化处理。
(3) 一维小波重构。根据小波分解的底层低频系数和各层高频系数进行一维小波重
构。
这 3 个步骤中,最关键的是如何选择阀值及如何进行阀值量化,在某种程度上,它关
系到信号降噪的质量。
应用一维小波分析进行信号降噪处理,主要通过前面介绍的两个函数 wden 和 wdencmp
来实现。wden 函数返回的是经过对原始信号 s 进行降噪处理后的信号 sd。wdencmp 函数是
一种使用更为普遍的函数,它可以直接对一维或二维信号进行降噪或压缩,处理方法也是通
过对小波分解系数进行阀值量化来实现。
小波分析进行阀值处理一般有下述 3 种方法。
(1)
(2)
(3)
默认阀值消噪处理。该方法利用函数 ddencmp 生成信号的默认阀值,然后
利用函数 wdencmp 进行消噪处理。
给定阀值消噪处理。在实际的消噪处理过程中,阀值往往可通过经验公式
获得,且这种阀值比默认阀值的可信度高。在进行阀值量化处理时可用函
数 wthresh。
强制消噪处理。该方法是将小波分解结构中的高频系数全部置为 0,即滤掉
所有高频部分,然后对信号进行小波重构。这种方法比较简单,且消噪后
的信号比较平滑,但是容易丢失信号中的有用成分。
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');
结果如图所示。