基于MATLAB的小波消噪仿真实现 (1)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
收稿日期:2007-12-10
作者简介:史振江(1979-),男,汉,河北唐山人,学士,讲师,研究方向智能检测与控制技术。
基金项目:河北省教育厅自然科学项目(Z2006442)
基于MATLAB 的小波消噪仿真实现
史振江1) 安建龙
2) 赵玉菊1) (石家庄铁路职业技术学院1) 河北石家庄 050041 衡水学院2) 河北衡水 053000)
摘要:小波阈值消噪方法是利用小波变换技术对含噪信号进行分解和重构,通过对小波分解后的小波系数限定阈值来消除噪声的方法。分析小波消噪的算法和实现步骤,并基于MATLAB 软件平台编写仿真程序。进行光纤光栅反射信号的小波消噪仿真实验,消噪效果良好。
关键词:小波消噪 阈值 分解 重构 光纤光栅
中图分类号:TP272 文献标识码:A 文章编号:1673-1816(2008)01-0063-04
1 引言
微弱信号检测[1]是关于如何提取和测量强噪声背景下微弱信号的方法,有效的去除信号中的噪声是实现微弱信号检测的关键。小波变换[2]是一种信号的时间、频率分析方法,具有多分辨分析的特点,是时间窗和频率窗都可以改变的时频局部化分析方法,已经广泛应用于信号消噪、信号处理、图像处理、语音识别与合成等领域。小波消噪[3~5]的方法可以分为三类:模极大值法、相关法以及阈值方法。其中,小波阈值消噪方法是利用小波变换技术对含噪信号进行分解和重构,通过对小波分解后的各层系数限定阈值来消除噪声的方法,因其实现简单、计算量小,取得了广泛应用。
MATLAB 即矩阵实验室,是一种建立在向量、数组和矩阵基础上,面向科学与工程计算的高级语言,它集科学计算、自动控制、信号处理、神经网络、图像处理于一体,具有极高的编程效率[6]。其中的小波处理工具箱可以方便实现小波消噪算法,对含噪信号进行消噪处理和研究。
本文详细分析了小波消噪算法,利用MATLAB 软件编写了程序,并对光纤光栅反射谱信号进行了小波消噪仿真实验。
2 小波变换与Mallat 算法
小波变换是指,把某一被称为基本小波的函数()t ψ平移位移b 后,
在不同尺度a 下作伸缩变换,得到连续小波序列,()a b t ψ,再与待分析信号()f t 作内积:
1/2(,)()()f R t b W a b a f t dt a
ψ−−=∫ (1) 在实际应用中,经常将,()a b t ψ作离散化处理,令2j a =,2j b k =g ,Z k j ∈,则得到相应的离散
石家庄铁路职业技术学院学报 2008年第1期
小波序列: 2
,()2(2)j
j j k t t k ψψ−−=− (2)
并且要在满足工程允许的条件下对待分析信号()f t 进行采样,得到相应的离散序列()f nT ,其中T 为采样周期。则离散小波变换为: 2(,)2()(2)j
j f R W j k f nT t k dt ψ−−=−∫ (3)
为了提高小波变换的计算速度,实际应用中经常采用基于多分辨率分析的Mallat 快速算法。多分辨率分析实质是把信号在一系列不同频率的空间上进行分解,一个信号在不同尺度上的多分辨分析,能够显示出信号不同频率的特征。每次分解都将信号分解成细节和近似两部分,细节部分包含信号的高频信息,近似部分包含信号的低频信息,对近似部分再进行分解可得到更高尺度上的细节和近似部分。分解尺度越高,分解得到的信号频率越低。信号的三层多分辨分析树结构图如图1所示,从图中可以明显的看到,多分辨分析只是对低频部分进行进一步分解,而高频部分则不予考虑。分解具有关系:S=A3+D3+D2+D1。分解的最终目的是力求构造一个在频率上高度逼近空间的正交小波基,这些分辨率不同的正交小波基相当于带宽各异的带通去噪器。从图1中可以看出,多分辨分析只对低频空间进行进一步的分解,使频率的分辨率越来越高。
Mallat 算法中的小波分解公式为:
12j j m n m n n Z
c h
c −−∈=∑ (4) 12j j m n m n n Z
d g c −−∈=∑ (5)
其中0,1,2,1n N =−L ,N 表示输入序列的个数;j m c 是分解后的低频分量,j m d 是分解后的
高频分量;j 代表第j 级小波分解,0,1,2,j M =L ,其中2M N <,当0j =时,0n c 就是原始输入信号的离散序列n f ;m 表示每次小波分解后低频分量和高频分量的长度,m 和n 会随着小波分解级数j 的增加而减小;2n m h −是多分辨分析的尺度系数,2n m g −是多分辨分析的小波系数,二者可利用MATLAB 中的小波分析工具箱函数wfilters (‘wname’,‘type’)来确定。
由(4)式和(5)式可知,原始输入信号的离散序列0
n c 通过与固定系数2n m h −和2n m g −进行m 次乘累加运算后得到第1级分解后的低频分量1m c 和高频分量1m d ,而1m c 又作为第2级分解的输入序
图1 信号的三层多分辨分析树结构图
第1期 史振江,等 基于MATLAB 的小波消噪仿真实现
列进一步得到2m c 和2m d ,直到第M 级分解后得到M m c 和M
m d 。小波重构过程与小波分解过程正好相反。 3 小波消噪与MATLAB 仿真方法
对含噪信号的消噪处理过程可以分为三个步骤。第一步,选择一个小波,确定小波分解的层次M ,然后利用离散小波变换对含噪信号进行M 层小波分解。由于噪声信号主要位于每层信号分解后的细节部分,因此对这些细节部分进行处理即可实现消噪。同一个信号用不同的小波基进行分解所得到的消噪效果是不同的,因此找到合适的小波基对于信号的消噪是很重要的。第二步,对第一层到第M 层的每一层高频系数进行阈值量化处理。阈值量化方法一般有强制去噪、默认阈值去噪和给定软(或硬)阈值去噪三种方法。强制去噪方法是把小波分解结构中的高频系数全部变为0,即把高频部分全部滤除掉,然后再对信号进行重构处理。这种方法比较简单,重构后的去噪信号也比较平滑,但容易丢失信号的有用成分。默认阈值去噪方法是首先产生信号的默认阈值,然后进行去噪处理。给定软(或硬)阈值去噪方法是在实际的去噪处理过程中,阈值往往可以通过经验公式获得。第三步,根据小波分解的第M 层的低频系数和经过量化处理后的第一层到第M 层的高频系数,进行信号的小波重构。
利用MATLAB 软件进行了小波消噪的仿真程序设计。程序中采用db2小波对含噪信号进行三层小波分解,采用默认阈值方法对分解后的小波系数进行处理,重构信号之后即可得到消噪后的信号,仿真程序如下所示:
fid=fopen('fbg.dat','r');%装入含噪信号
t=1:ls ;
subplot(1,2,1); plot(s,'k');%画出原始含噪信号波形
axis([1 1024 0 100]);
[c,l]=Wavedec(s,3,'db2');%采用db2小波并对信号进行三层分解
ca3=appcoef(c,l,'db2',3);%提取小波分解的低频系数
cd3=detcoef(c,l,3);%提取第三层的高频系数
cd2=detcoef(c,l,2);%提取第二层的高频系数
cd1=detcoef(c,l,1);%提取第一层的高频系数
%下面利用默认阈值进行消噪处理
%用ddencmp 函数获得信号的默认阈值,使用wdencmp 命令函数来实现消噪过程
[thr,sorh,keepapp]=ddencmp('den','wv',s);
s2=wdencmp('gbl',c,l,'db2',3,thr,sorh,keepapp);
subplot(1,2,2); plot(s2,'k');
axis([1 1024 0 100]);
4 基于MATLAB 的实验仿真
利用MATLAB 软件对光纤光栅传感解调系统中的光纤光栅反射谱信号进行了小波消噪的仿真实验,消噪效果对比图如图2所示。图(a )是含有各种光噪声的光纤光栅反射谱信号,经过上述程序运行处理后,可以得到如图(b )所示的纯净的光纤光栅反射谱信号,可见反射谱中的噪声信号得到了较好的抑制。