您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 能源与动力工程 > 小波变换的原理及matlab仿真程序
...基于小波变换的信号降噪研究2小波分析基本理论设Ψ(t)∈L2(R)(L2(R)表示平方可积的实数空间,即能量有限的信号空间),其傅立叶变换为Ψ(t)。当Ψ(t)满足条件[4,7]:2()RtdwwC(1)时,我们称Ψ(t)为一个基本小波或母小波,将母小波函数Ψ(t)经伸缩和平移后,就可以得到一个小波序列:,1()()abtbtaa,,0abRa(2)其中a为伸缩因子,b为平移因子。对于任意的函数f(t)∈L2(R)的连续小波变换为:,1(,),()()fabRtbWabfftdtaa(3)其逆变换为:211()(,)()fRRtbftWabdadbCaa(4)小波变换的时频窗是可以由伸缩因子a和平移因子b来调节的,平移因子b,可以改变窗口在相平面时间轴上的位置,而伸缩因子b的大小不仅能影响窗口在频率轴上的位置,还能改变窗口的形状。小波变换对不同的频率在时域上的取样步长是可调节的,在低频时,小波变换的时间分辨率较低,频率分辨率较高:在高频时,小波变换的时间分辨率较高,而频率分辨率较低。使用小波变换处理信号时,首先选取适当的小波函数对信号进行分解,其次对分解出的参数进行阈值处理,选取合适的阈值进行分析,最后利用处理后的参数进行逆小波变换,对信号进行重构。3小波降噪的原理和方法3.1小波降噪原理从信号学的角度看,小波去噪是一个信号滤波的问题。尽管在很大程度上小波去噪可以看成是低通滤波,但由于在去噪后,还能成功地保留信号特征,所以在这一点上又优于传统的低通滤波器。由此可见,小波去噪实际上是特征提取和低通滤波的综合,其流程框图如图所示[6]:小波分析的重要应用之一就是用于信号消噪,一个含噪的一维信号模型可表示为如下特征提取低通滤波特征信号重建信号带噪信号...形式:(k)()()Sfkekk=0.1…….n-1其中,f(k)为有用信号,s(k)为含噪声信号,e(k)为噪声,ε为噪声系数的标准偏差。假设e(k)为高斯白噪声,通常情况下有用信号表现为低频部分或是一些比较平稳的信号,而噪声信号则表现为高频的信号,下面对s(k)信号进行如图结构的小波分解,则噪声部分通常包含在Cd1、Cd2、Cd3中,只要对Cd1,Cd2,Cd3作相应的小波系数处理,然后对信号进行重构即可以达到消噪的目的。3.2降噪方法一般来说,一维信号的降噪过程可以分为3个步骤进行[5,6]:1)一维信号的小波分解,选择一个小波并确定一个小波分解的层次N,然后对信号进行N层小波分解计算。2)小波分解高频系数的阈值量化,对第1层到第N层的每一层高频系数,选择一个阈值进行软阈值量化处理.3)一维小波的重构。根据小波分解的第N层的低频系数和经过量化处理后的第1层到第N层的高频系数,进行一维信号的小波重构。在这3个步骤中,最核心的就是如何选取阈值并对阈值进行量化,在某种程度上它关系到信号降噪的质量.在小波变换中,对各层系数所需的阈值一般根据原始信号的信号噪声比来选取,也即通过小波各层分解系数的标准差来求取,在得到信号噪声强度后,可以确定各层的阈值。这里着重讨论了信号在两种不同小波恢复后信号质量的不同和对信号中的信号与噪声进行分离。4.仿真实验本文采用Mtalab本身程序提供的noissin信号函数及初设原始信号f(x)为例进行Matlab分析[1,3],其中:()sin(0.03)fxte=noissin+0.5*randn(size(e1));首先对noissin函数上叠加上随机噪声信号得到e,分别对比采用db10小波和sym8小波对信号e进行5层分解,并且细节系数选用minimaxi阈值模式和尺度噪声(db10)以及选用SCa1Cd1Ca1Cd1Ca1Cd1...sure阈值模式和尺度噪声(sym8)。在进行噪声消除后,还对原信号进行进一步分析,将原始信号和噪声信号分离开来,仿真结果如图所示:图1图2...图3图1-1为原始信号图形,1-2为叠加随机噪声后的图形,而1-3和1-4为利用db10和sym8小波默认阈值降噪后的信号图形。从图1-3和1-4可以看出利用db10和sym8小波降噪后的信号基本上恢复了原始信号,去噪效果明显。但是滤波后的信号与原始信号也有不同,从图中可以很直观地看到采用阈值消噪后信号特征值较少无法准确还原原始信号这是由于为降噪过程中所用的分析小波和细节系数的阈值不恰当所致,如需要更好的恢复信号,还可以采用其它种类小波对其进行分析,通过选取不同的阈值,分析结果,得到一个合适的阈值。从图2和图3中看出,在经过用db10对信号进行5层分解,然后分别对分解的第5层到第1层的低频系数和高频系数进行重构。可以得出其主要基波函数和高频噪声函数的图形,其中小分波分解的细节信号是有白噪声分解得到的,而正弦信号可以在图2中的近似信号a5得到。因为在这一层的影响已经可以忽略了,所以获得的信号就是初始信号的波形,从而把淹没在噪声中的有用信号有效地分离出来。5总结小波变换对平稳信号的去噪声,要比传统的滤波去噪声得到的效果好.用小波变换进行信号降噪处理,既降低了噪声同时又提高了信噪比,这说明小波降噪方法是切实可行的方案,但是由于小波函数很多,采用不同的小波进行分解,得到的结果可能相差很大,而变换前并不能预知哪一种小波降噪效果更好,需反复试验比较才能得到良好的效果,这也是小波变换的困难之处之一。另外信号降噪过程中阀值的选取是十分重要的。本文利用两个小波(sym8,db10)以及将信号中的信噪分离开来,更加直观可行,通过分别进行信号降噪处理对所得结果与原始信号进行比较可以得出Sym8小波以及默认阈值处理后的重构信号与原始信号最为接近,与分离的结果相同。小波分析是一种信号的视频分析方法,它具有多分辨率分析的特点,很适合探测正常信...号中夹带的瞬态反常现象并展示其成分,有效区分信号中的突变部分和噪声。通过MATLAB编制程序进行给定信号的噪声抑制和非平稳信号的噪声消除实验表明:基于小波分析的消噪方法是一种提取有用信号、展示噪声和突变信号的优越方法,具有广阔的实用价值。在这个越来月信息化的社会中,基于小波分析的应用前景必将越来越广泛。N=10;t=1:10;f=sin(3.14*t).*exp(0.2*t)+20*sin(6.28*t).*exp(0.3*t)+5*sin(1.256*t).*exp(0.4*t);plot(t,f);f=sin(0.314*t).*exp(0.0002*t)+20*sin(0.628*t).*exp(0.0003*t)+5*sin(0.1256*t).*exp(0.0004*t);输出数据fid=fopen('E:1.txt','wt');fprintf(fid,'%f\n',L);[C,L]=wavedec(f,5,'db10');fid=fopen('E:1.txt','wt');fprintf(fid,'%f\n',L);fprintf(fid,'%f\n',C);[C,L]=wavedec(f,1,'db10');fid=fopen('E:2.txt','wt');fprintf(fid,'%f\n',C);[C,L]=dwt(f,'db10');fid=fopen('E:3.txt','wt');fprintf(fid,'%f\n',C);fprintf(fid,'%f\n',L);参考文献[1]徐明远,邵玉斌.MATALAB仿真在通信与电子工程中的应用[M].西安:西安电子科技大学出版社,2010.[2]张志涌,杨祖樱等编著.MATLAB教程(R2006a-R2007a)[M].北京:北京航空航天出版社,2006.[3]张德丰.详解MATLAB数字信号处理[M]北京:电子工业出版社,2010.[4]杨建国.小波分析及其工程应用[M]北京:机械工业出版社,2005.[5]冯毅,王香华.小波变换降噪处理及其MATLAB实现[J].数字采集与处理,2006,,21(12):37-39.[6]禹海兰,李天云.基于小波理论的噪声信号分析[J].东北电力学院学报.1997.17(3):36-40.[7]潘泉,张磊,孟晋丽,张洪才著,小波滤波方法及应用[M].北京:清华大学出版社,2005.附仿真源码如下:N=1000;t=1:1000;...f=sin(0.03*t);loadnoissin;e1=noissin;init=2055615866;randn('seed',init);e=e1+0.5*randn(size(e1));subplot(2,2,1);plot(t,f);xlabel('1样本序列');//x轴标记ylabel('原始信号幅值');//y轴标记grid;subplot(2,2,2);plot(e);xlabel('2测试样本序列');ylabel('含有已加噪声的信号幅值');grid;s1=wden(e,'minimaxi','s','one',5,'db12');subplot(2,2,3);plot(s1);xlabel('3db10降噪后信号');ylabel('db10小波降噪后的信号幅值');grid;s2=wden(e,'heursure','s','one',5,'sym8');subplot(2,2,4);plot(s2);xlabel('4sym降噪后信号');ylabel('sym8小波降噪后的信号幅值');grid;figure;subplot(6,1,1);plot(e);ylabel('e');[C,L]=wavedec(e,5,'db10');fori=1:5a=wrcoef('a',C,L,'db10',6-i);subplot(6,1,i+1);plot(a);ylabel(['a',num2str(6-i)]);endfigure;subplot(6,1,1);plot(e);ylabel('e');fori=1:5d=wrcoef('d',C,L,'db10',6-i);subplot(6,1,i+1);plot(d);ylabel(['d',num2str(6-i)]);...end.........
本文标题:小波变换的原理及matlab仿真程序
链接地址:https://www.777doc.com/doc-1731985 .html