《小波变换与信号的分解重构.ppt》由会员分享,可在线阅读,更多相关《小波变换与信号的分解重构.ppt(43页珍藏版)》请在三一办公上搜索。
1、小波变换与信号的分解重构,S1.傅立叶变换与小波,1、傅立叶变换的基本思想:将信号分解成许多不同频率的正弦波的叠加,将信号从时间域转换到频率域。(1.1),S1.傅立叶变换与小波,2、傅立叶变换的缺点:1)丢掉时间信息,无法对某一时间段对应的频域信息或者某一频率段对应的时间信息进行分析;2)不利于分析非平稳信号,例如偏移、趋势、突变等等。需要寻求一种同时具有时间分辨率和频域分辨率的分析方法。,S1.傅立叶变换与小波,为了分析和处理非平稳信号,在傅里叶分析理论基础上,提出并发展了一系列新的信号分析理论:短时傅里叶变换(STFT)或加窗傅里叶变换(WFT)、Gabor变换、时频分析、小波变换、分数
2、阶傅里叶变换(Fractional Fourier Transform)、线调频小波变换等。,S1.傅立叶变换与小波,1946 Gabor变换短时傅立叶变换(STFT)1)基本思想:对信号加窗,对窗内的信号进行傅立叶变换,反映信号的局部特征;2)缺点:其窗口函数 通过函数时间轴的平移与频率限制得到,由此得到的时频分析窗口具有固定的大小。,S1.傅立叶变换与小波,Gabor变换及其应用示例 Gabor变换是海森伯(Heisenberg)测不准原理下的最优的短时傅立叶变换。高斯窗函数是短时傅里叶变换同时追求时间分辨率与频率分辨率时的最优窗函数。具有高斯窗函数的短时傅里叶变换就是Gabor变换。,S
3、1.傅立叶变换与小波,Gabor变换应用示例(1)高斯窗函数(2)信号函数,S1.傅立叶变换与小波,(3)平移后的高斯窗函数(4)归一化(5)Gabor变换,S1.傅立叶变换与小波,Gabor变换的主要程序代码:shift-l=100;%高斯窗每次平移点数shift-n=(length(t)-1)/shift_l;%高斯窗平移总次数y2=zeros(shift_n,2001);for k=0:shift_n-1 gauss-c=2(1/4)*exp(-pi*(t-k*shift-l*Ts).2).*cos(5*pi*t);%平移后的高斯函数 gaussc2=gaussc/sum(gaussc.
4、2);%归一化 y1=conv(hilbert(fx),gaussc2);%短时傅立叶变换,即对信号和Gauss函数做卷积 y2(k+1,:)=y1;end,S1.傅立叶变换与小波,程序运行结果:,S1.傅立叶变换与小波,Gabor变换的幅频图,S1.傅立叶变换与小波,Gabor变换的等高线图,S1.傅立叶变换与小波,3、小波变换 窗口大小(即面积)不变,但窗口形状随频率高低而变化,是一种时间窗和频率窗都可改变的时频分析方法,在低频有较高的频率分辨率和较低的时间分辨率,在高频部分有较低的频率分辨率和较高的时间分辨率,对信号局部特征的表征能力强。,S2.连续小波变换,1、基本小波的定义,S2.连
5、续小波变换,2、连续小波变换的定义,S2.连续小波变换,3、约束条件,S2.连续小波变换,4、对偶小波,S2.连续小波变换,5、连续小波的重要性质,S2.连续小波变换,6、连续小波变换的计算过程从定义式可知,连续小波变换计算分以下5个步骤进行。(1)选定一个小波,并与处在分析时段部分的信号相比较。(2)计算该时刻的连续小波变换系数C。如下图所示,C表示了该小波与处在分析时段内的信号波形相似程度。C愈大,表示两者的波形相似程度愈高。小波变换系数依赖于所选择的小波。因此,为了检测某些特定波形的信号,应该选择波形相近的小波进行分析。,S2.连续小波变换,6、连续小波变换的计算过程(3)如图1所示,调
6、整参数b,调整信号的分析时间段,向右平移小波,重复步骤,直到分析时段已经覆盖了信号的整个支撑区间。(4)调整参数a,尺度伸缩,重复步骤。(5)重复步骤,计算所有的尺度的连续小波变换系数,如图2所示。图1 图2,S2.连续小波变换,6、连续小波变换的计算过程上述步骤可用以下的公式表示。设f(t)=f(kt),t(k,K+1),则(*),S2.连续小波变换,Matlab 实现连续小波变换的代码 precis=10;%小波函数积分精度控制signal=signal(:);len=length(signal);coefs=zeros(length(scales),len);nbscales=lengt
7、h(scales);psi_integ,xval=intwave(wname,precis);%计算从-到k的小波积分序列wtype=wavemngr(type,wname);if wtype=5 psi_integ=conj(psi_integ);end%判断是否为复小波,对复小波取共轭xval=xval-xval(1);dx=xval(2);xmax=xval(end);ind=1;for k=1:nbscales%循环计算各尺度的小波系数 a=scales(k);j=1+floor(0:a*xmax/(a*dx);if length(j)=1,j=1 1;end f=fliplr(psi
8、_integ(j);coefs(ind,:)=-sqrt(a)*wkeep(diff(conv(signal,f),len);%计算公式(*)ind=ind+1;end,S3.多分辨分析与小波变换,1、多分辨分析的定义,S3.多分辨分析与小波变换,2、正交MRA尺度函数的定理,S3.多分辨分析与小波变换,3、Mallat定理,S3.多分辨分析与小波变换,4、基于Mallat方法的信号分解重构算法,S3.多分辨分析与小波变换,S3.多分辨分析与小波变换,S3.多分辨分析与小波变换,Mallat信号分解重构的主要程序代码(1)信号函数定义%1.正弦波定义f1=50;%频率1f2=100;%频率2f
9、s=2*(f1+f2);%采样频率Ts=1/fs;%采样间隔N=120;%采样点数n=1:N;y=sin(2*pi*f1*n*Ts)+sin(2*pi*f2*n*Ts);%信号函数,S3.多分辨分析与小波变换,(2)小波滤波器谱分析h=wfilters(db30,l);%低通g=wfilters(db30,h);%高通h=h,zeros(1,N-length(h);%补零(圆周卷积,且增大分辨率便于观察)g=g,zeros(1,N-length(g);%补零(圆周卷积,且增大分辨率便于观察),S3.多分辨分析与小波变换,(3)MALLAT分解算法(圆周卷积的快速傅里叶变换实现)sig1=iff
10、t(fft(y).*fft(h);%低通(低频分量)sig2=ifft(fft(y).*fft(g);%高通(高频分量)(4)MALLAT重构算法sig1=dyaddown(sig1);%2抽取sig2=dyaddown(sig2);%2抽取sig1=dyadup(sig1);%2插值sig2=dyadup(sig2);%2插值sig1=sig1(1,1:N);%去掉最后一个零sig2=sig2(1,1:N);%去掉最后一个零hr=h(end:-1:1);%重构低通gr=g(end:-1:1);%重构高通hr=circshift(hr,1);%位置调整圆周右移一位gr=circshift(gr
11、,1);%位置调整圆周右移一位sig1=ifft(fft(hr).*fft(sig1);%低频sig2=ifft(fft(gr).*fft(sig2);%高频sig=sig1+sig2;%源信号,S3.多分辨分析与小波变换,程序运行结果:,S3.多分辨分析与小波变换,S3.多分辨分析与小波变换,S3.多分辨分析与小波变换,小波变换的改进与多孔算法小波的问题在那里?其中之一,平移不变性,也就是先将源信号平移n位,再做小波变换,和先将源信号做小波变换,再平移n位,结果不同。这对于实时处理和一些场合是极为不便的。多孔算法(atrous)可以解决此瓶颈。多孔算法,又称非抽取小波变换,即undecima
12、ted wavelet transform or nonsampled wavelet transform,简写(NSWT)。,S3.多分辨分析与小波变换,Mallat算法与多孔算法的关系Mallat算法是多孔算法的基础,两者的区别在于:(1)MALLAT不具有移不变特点而TROUS具有移不变特点。根源就在抽取插值上。TROUS即非抽取算法,是移不变的。而移不变的代价,就是高频分量加低频分量长度再不是源信号的长度,而是源信号长度的2倍。,S3.多分辨分析与小波变换,Mallat算法与多孔算法的关系(2)对于Mallat,滤波器还是可以用,WFILTERS(),且重构和分解滤波器的关系,还是逆序
13、后再右移一位(圆周卷积+周期延拓)。但所有的滤波器系数要乘以2-1/2。这是因为Mallat算法PR条件有两个,一个是抗混叠,另一个是完全重构。而多孔算法由于非插值抽取,只有完全重构,且等式的右边常数是“1”,而不是MALLET-PR条件的“2”。所以MALLET的PR条件要乘以“1/2”才和TROUS一致,而这个因子“1/2”正好被分配到两个滤波器上,所以是2-1/2。,S3.多分辨分析与小波变换,Mallat算法与多孔算法的关系(3)在每一层的下一层,滤波器中间要插值0。数字信号一个周期的频谱范围为-PI,PI,Mallat算法的低通滤波-PI/2,PI/2,高通滤波-PI,-PI/2 U
14、 PI/2,PI,则滤波后低频分量频谱范围-PI/2,PI/2。这时注意“开始抽取,频谱展宽”,又回到源信号频谱-PI,PI,然后再低通、高通滤波,周而复始。而对于多孔算法,低频分量始终是-PI/2,PI/2,若低通滤波器仍是-PI/2,PI/2,高通滤波器-PI,-PI/2 U PI/2,PI,这时就需要进行“滤波器插值”了,低通和高通滤波器频谱变窄,低通-PI/4,PI/4,高通-PI/2,-PI/4 U PI/4,PI/2。,S3.多分辨分析与小波变换,Trous算法的主要程序代码:(1)生成信号%1.生成信号f=50;%频率fs=800;%采样率T=128;%信号长度n=1:T;y=s
15、in(2*pi*f*n/fs)+2*exp(-f*n/(4*fs);%信号,S3.多分辨分析与小波变换,(2)正变换l1=wfilters(db4,l)*sqrt(2)/2;%参考低通滤波器l1_zeros=l1,zeros(1,T-length(l1);%低通滤波器1h1=wfilters(db4,h)*sqrt(2)/2;%参考高通滤波器h1_zeros=h1,zeros(1,T-length(h1);%高通滤波器1low1=ifft(fft(y).*fft(l1_zeros);%低频分量1high1=ifft(fft(y).*fft(h1_zeros);%高频分量1l2=dyadup(l
16、1);%原滤波器插值l2_zeros=l2,zeros(1,T-length(l2);%低通滤波器2h2=dyadup(h1);%原滤波器插值h2_zeros=h2,zeros(1,T-length(h2);%高通滤波器2low2=ifft(fft(low1).*fft(l2_zeros);%低频分量2high2=ifft(fft(low1).*fft(h2_zeros);%高频分量2,S3.多分辨分析与小波变换,(3)反变换lr2=circshift(l2_zeros(end:-1:1).,1).;%重构低通滤波器2hr2=circshift(h2_zeros(end:-1:1).,1).;%重构高通滤波器2lr1=circshift(l1_zeros(end:-1:1).,1).;%重构低通滤波器1hr1=circshift(h1_zeros(end:-1:1).,1).;%重构高通滤波器1lowr=(ifft(fft(low2).*fft(lr2)+ifft(fft(high2).*fft(hr2);%重构低频分量1(lowr=low1)r_s=(ifft(fft(lowr).*fft(lr1)+ifft(fft(high1).*fft(hr1);%重构源信号(r_s=y),S3.多分辨分析与小波变换,程序运行结果:,完!,