《小波分析入门和matlab使用.docx》由会员分享,可在线阅读,更多相关《小波分析入门和matlab使用.docx(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、小波分析介绍以及 matlab 命令实现一,小波分析的缘起傅里叶分析是信号处理中最常用的方法,傅里叶在 1807 年指出任何一个周期的连续信号可以表示成一些合适的正弦波的叠加。这样一个时间域的信号就通过傅力叶变换转化成一系列的不同频率的余弦波的系数。但是傅里叶分析最大的缺点是在转化后,时间信息完全丢失,对于一般的稳定信号(stationary signal)在时间上没有重大的性质变化,这不算什么,但对于不稳定信号(non stationary signal),一些重要的信息如趋势,转折,突变点,事件的起止都丢失在频率域中。傅力叶变换不能提取这些信息。于是人们想要一种 time localize
2、d 分析方法。Gabor1946 年提出了一种傅力叶变换的改进方法,短时傅力叶变换。仅仅分析一小段时间的信号, 就是在时间域取一个时间窗,同时要克服非周期性问题,使用了各种窗函数,使得窗内的信号从 0 平滑的过度到信号的真实值在过度到 0,使得首尾都为 0(为了满足窗内的周期性)。如常见的汉宁窗 cosine taper 函数,以及复杂的 multitaper 函数。但是这样的结果在时间和频率上存在一个折中,并且对所有的频率使用相同的窗长,不一定可以满足精度的要求。1984 年一些地球物理学家 Morlet 等人发现了一种新的信号处理方法,小波变换。小波变换允许在高频信息时使用更短的时间段,在
3、低频使用长时段来获得更加精确的结果。小波变换包括连续小波变换, 离散小波变换以及小波包变换。存在一系列的母小波,选定后,小波变换把原信号变成若干偏移,缩放 的母波。二,连续小波变换(continuous wavelet transform) 1,母小波与尺度,偏移子波:小波就是满足一定条件的一些函数,母波经过尺度变换,时间偏移后就是一系列的子波。图一:母波以及 scale 的母波图二:母波以及 shift 的子波2,连续小波变换:选定母波后,通过尺度变换,时间偏移会得到许多子波,这一系列的子波于原信号相关,得到的系数就是小波变换后的结果。过程如下:(1) 母波与信号相关得到相似系数 c(2)
4、母波在时间上偏移,在与信号相关得到新的系数 c(3) 母波做尺度上的变化,拉伸后,与信号相关,偏移在相关到完成所有的 scale 和shift3,连续小波变换的 matlab 实现:连续小波变换的命令是 coefs = cwt(x,scales,wname),x 是信号,scales 是使用的尺度矢量,wname 是小波的类型,可以在命令行中使用 wavemenu 打开小波工具箱的 wavelet display 查找。%构建我们的信号,在 500 处有一个突变点。x = zeros(1000,1);x(500) = 1;%进行小波变换CWTcoeffs = cwt(x,1:128,haar,
5、plot); colormap jet; colorbar;结果如下:也可以单独看某个尺度的图,CWTcoeffs(10,:)表示尺度为 10 的cwt 值。三,离散小波变换:1,为什么要进行离散小波变换连续小波变换要经过大量的尺度偏移的转换在计算,将会产生较大的计算量,因此有人选择在部分尺度和时间偏移上来做,就是连散小波变换。事实证明,如果我们按照 2 的幂值去选择尺度和偏移,我们的小波分析就能更高效并且能相当的精确。2. 一级滤波:近似和细节(Approximations and details)(1) 理论过程:对许多信号来说,低频信息是最重要的部分,给予了信号的基本特征。高频的部分则对
6、信号细化,在小波分析中,我们说的近似就是信号中大尺度的低频的部分,而细节则是指信号中高频的小尺度的部分。通过一个高频和低频的滤波器,可以分离着两部分。信号 S 共 1000 个点,分别通过高通和低通滤波器后,进行一个减采样的过程,得到 500 个点的 cD 和cA,其中cA 为低通滤波器出来后的结果,保留了信号的基本信息,为一个近(Approximation)。cD 为高通滤波器出来后,保留了信号的高频信息,为一个细节(Detail)。(2) matlab 实现:matlab 中相关命令为 dwt 进行一级的离散小波分解,idwt 一级的小波合成。%构建信号 sload leleccum;s
7、= leleccum(1:3920); l_s = length(s);%进行一级的离散小波分解,使用 db1 为母波cA1,cD1 = dwt(s,db1);%从系数 cA1 和cD1 中获得信号的近似和细节A1 = idwt(cA1,db1,l_s);D1 = idwt(,cD1,db1,l_s);结果展示:注意,dwt 后的系数和 1 级的 Approximation 和detail 的区别在于是否通过补 0 到原信号长度。3,多级滤波,多级分解(1) 理论过程:上面的分解过程可以迭代的进行,每一级的近似又可以继续分解成新的近似和细节,产生了小波的分解树。(2) matlab 的实现:%
8、仍然使用上例子的信号 s,进行 3 级的 DWT 分解C,L = wavedec(s,3,db1);%C 中存放的是系数,L 中存放长度%提取出各级的 A 和D 的系数cA3 = appcoef(C,L,db1,3); cD1,cD2,cD3 = detcoef(C,L,1,2,3);%从各级系数中得到各级的近似和细节A3 = wrcoef(a,C,L,db1,3);D1 = wrcoef(d,C,L,db1,1);D2 = wrcoef(d,C,L,db1,2);D3 = wrcoef(d,C,L,db1,3);%从系数中重构信号并计算误差:A0 = waverec(C,L,db1); er
9、r = max(abs(s-A0)结果如图:四,小波包分析1.在离散小波分析中,信号分成近似和细节,然后近似向下层继续进行分解,但细节不再变化。小波包分析中,细节和近似都将继续向下一级分解。于是获得了小波包的分解树。有许多中分解方法,如S = A1+D1 = A1 + AD2+DD2 = AA2+DA2+AAD3+DAD3+DD2 = .如何选择一种最有效的办法来表示信号的问题就产生了,通常使用 entropy-based criterion 条件来选择。2,matlab 实现:%获得信号load noisdopp%进行 5 级的波包分析,使用 sym4 母波T = wpdec(noisdop
10、p,5,sym4); plot(T)%结果如右图%从波包系数中提取出某个节点的数据wpc = wpcoef(T,16);%根据该节点的数据,获得该节点的信号近似rwpc = wprcoef(T,16);%结果如右图%决定最好的波包树Topt = besttree(T); plot(Topt)%利用第七个节点数据重构信号rsig = wprcoef(Topt,7);% rsig is length 1024 plot(noisdopp,k); hold on; plot(rsig,b,linewidth,2); axis tight;五,参考文献大部分内容例子图片内容都来自 matlab wavelet toolbox user guide。使得读者不需要看数学公式就可以快速了解小波变换并使用。欢迎转载学习wenmingshaoxing