2022年2022年解读matlab之小波库函数 .pdf
《2022年2022年解读matlab之小波库函数 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年解读matlab之小波库函数 .pdf(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 解读 matlab 之小波库函数南京理工大学仪器科学与技术专业谭彩铭2010-4-2 使用的 matlab 软件版本为matlab7.1 1 dwt 函数dwt 函数是单尺度一维小波变换函数。dwt 函数执行过程中调用了函数conv2,这个函数是运算的关键,需要首先明白conv2 函数的执行过程。要明白conv2 函数,需要先明白conv 函数。对 w = conv(u,v) 运算Let m = length(u) and n = length(v). Then w is the vector of length m+n-1 whose kth element is 式( 1)假设 h=h
2、(1) h(2) h(3) h(4) , x=x(1) x(2) x(3) x(4) x(5) x(6) x(7), 为更直接地表达y=conv(h,x)的计算过程,作如下示意图。其中length(y)=7+4-1 。图 1 对 c=conv2(a,b)运算这里, a 和 b 为一维或二维矩阵,其计算过程可由下式表示1212121122(,)(,) (1,1)kkc n na k kb nk nk式( 2)The size of c in each dimension is equal to the sum of the corresponding dimensions of the inpu
3、t matrices, minus one. That is, if the size of a is ma,na and the size of b is mb,nb, then the size of C is ma+mb-1,na+nb-1. 其计算过程可以由下表表示表 1 c(1,:) conv(a(1,:),b(1,:) c(2,:) conv(a(1,:),b(2,:)+ conv(a(2,:),b(1,:) c(3,:) conv(a(1,:),b(3,:)+ conv(a(2,:),b(2,:) +conv(a(3,:),b(1,:) 名师资料总结 - - -精品资料欢迎下载
4、- - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 19 页 - - - - - - - - - 2 下面研究一下conv2 函数中的 valid 参数的用法。The formula is c=conv2(a,b, valid ) Valid:Returns only those parts of the convolution that are computed without the zero-padded edges. Using this option, c has size ma-mb+1,na-nb+1
5、when all(size(a) = size(b). Otherwise conv2 returns . 假设 h=h(1) h(2) h(3) h(4),x=x(1) x(2) x(3) x(4) x(5) x(6) x(7),计算 y=conv2(x,h, valid ),它的计算过程可由下图表示,其中length(y)= 7-4+1 。图 2 下面来看看dwt 函数的工作过程假设 x=x(1) x(2) x(3) x(4) x(5) x(6) x(7),计算 y=dwt(x, db2 )。其计算过程主要由两个部分组成:第一部分:边缘延拓,它主要由函数wextend完成。第二部分:卷积运
6、算,它主要由函数conv2 完成。先看第一部分,仔细分析子程序部分,函数wextend的用法为y=wextend(1D, sym,x,3); 这样得到的 y= x(3) x(2) x(1) x(1) x(2) x(3) x(4) x(5) x(6) x(7) x(7) x(6) x(5) 在看第二部分,仔细分析子程序部分,核心语句有z=conv2(y,Lo_D,valid); 这里设 Lo_D= h(1) h(2) h(3) h(4) 。结合图 2所示对 conv2函数用法的介绍,绘制下图表示该处卷积的计算过程。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - -
7、- - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 19 页 - - - - - - - - - 3 图3 由此可见,小波库函数dwt 中是如何处理边缘点的。最后就是下采样,其下采样是按照式a = z(2:2:length(z)进行的,高频低频部分均如此,项数为 floor((7+4-1)/2)。2 idwt函数idwt函数是单尺度一维离散小波逆变换函数。小波重构函数的核心函数为上采样函数dyadup 和卷积运算函数conv2 。下面先简要看一看dyadup 函数。dyadup implements a simple zero-padding scheme
8、 very useful in the wavelet reconstruction algorithm. Y = dyadup(X,EVENODD), where X is a vector, returns an extended copy of vector X obtained by inserting zeros. Whether the zeros are inserted as even- or odd-indexed elements of Y depends on the value of positive integer EVENODD: If EVENODD is eve
9、n, then Y(2k-1) = X(k), Y(2k) = 0. If EVENODD is odd, then Y(2k-1) = 0, Y(2k) = X(k). Y = dyadup(X) is equivalent to Y = dyadup(X,1) (odd-indexed samples). 设x=1 2 3 4 5 6 7,该函数的运算过程可由下表较直接地表示。对一维的情况,就表中所述几种。表 2 dyadup(x) 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 dyadup(x,1) 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 dyadup(
10、x,3) 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 dyadup(x,0) 1 0 2 0 3 0 4 0 5 0 6 0 7 dyadup(x,0,1) 1 0 2 0 3 0 4 0 5 0 6 0 7 0 dyadup(x,2) 1 0 2 0 3 0 4 0 5 0 6 0 7 至于 conv2 函数,之前已作介绍。这里要关心的是边界点的处理问题。idwt函数中,对于数值的取舍问题用到的函数为wkeep1 ,下面先研究下函数wkeep1 。 (好像在 help 中搜寻不到,可在命令窗口中输入help wkeep1命令,得到下列使用说明)Y = WKEEP1(X,L,O
11、PT) extracts the vector Y from the vector X. The length of Y is L. 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 19 页 - - - - - - - - - 4 If OPT = c (l , r, respectively), Y is the central(left, right, respectively) part of X. Y = WKEEP1(X,L,FIRST) returns the
12、 vector X(FIRST:FIRST+L-1). Y = WKEEP1(X,L) is equivalent to Y = WKEEP1(X,L,c). 下表中列出了 iwt 函数中用到的两种情况。设x=1 2 3 4 5 6 7。表 3 wkeep1(x,3,c) 3 4 5 wkeep1(x,2,c) 3 4 下面仔细分析一下边缘点的处理问题。之前在文档中对完全重构滤波器的分解与重构过程已作分析。下列根据理论自己编写的程序便能完成完全重构过程。图4 图5 clear;load noissin;v=noissin(1:6);ca1,cd1,tip1=funbreakupindb2(v)
13、;c=funreconstructindb2(ca1,cd1,tip1);plot(v);hold on ;plot(c,r.);hold off;function ca1,cd1,tip=funbreakupindb2(v)h0,h1,h2,h3 = wfilters(db2);w0=conv(h0,v);x0=conv(h1,v);N2=length(w0);tip=mod(N2,2);if(tip = 1) w0(N2+1)=0; x0(N2+1)=0;endN=floor(length(w0)/2);w0=reshape(w0,2,N);x0=reshape(x0,2,N);w1=w0
14、(1,:);x1=x0(1,:);ca1=w1;cd1=x1;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 19 页 - - - - - - - - - 5 图6 图7 但是你会发现边缘处的尺度函数系数和小波函数系数偏离的很远,这在阈值滤波时便会在边缘点处产生很大的误差。因为边缘点处没有完全用到4个滤波系数所致。matlab小波库函数dwt 中对这个问题的解决方案是边缘延拓,之前已作介绍,如图3 所示。这里的描述借助图3 的描述,依然假设x=x(1) x(2) x(3)
15、 x(4) x(5) x(6) x(7), 计算function c=funreconstructindb2(ca1,cd1,tip)h0,h1,h2,h3 = wfilters(db2);N=length(ca1);w1=ca1;x1=cd1;w2=w1;zeros(1,N);w3=w2(:);x2=x1;zeros(1,N);x3=x2(:);y=conv(h2,w3)+conv(h3,x3);if(tip=1) N1=2*N-4;else N1=2*N-3;endc=y(4:N1+3);名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - -
16、- - - 名师精心整理 - - - - - - - 第 5 页,共 19 页 - - - - - - - - - 6 y=dwt(x, db2 )。作边缘延拓后,得到图3 所示结果。如图3 所示,作卷积运算后,得到的项数共有16 项,记为 v(1)v(16), 但是作边缘取舍和下采样后得到项为z(2),z(4),z(6),z(8),z(10)。接着的是重构过程,重构过程也是作卷积的过程,我们先对v(1)v(16) 项作下采样并作重构卷积运算,就可以清晰地知道z 项的重构卷积运算是否达到重构效果。下图显示了重构过程。图 8 这里输入序列x 的项数为奇数7,对于偶数项有稍许不同。下面设 x=x(
17、1) x(2) x(3) x(4) x(5) x(6),作边缘延拓并作卷积运算得到的项数为15 项,记为v(1)v(15) ,再作边缘取舍和下采样后得到项为z(2),z(4),z(6),z(8)。下图显示了重构过程。图 9 从而得证。下图程序是dwt和 idwt函数的简单应用。图 10 clear;load noissin;s=noissin(1:6);ca1,cd1 = dwt(s,db2); ss = idwt(ca1,cd1,db2); plot(s);hold on ;plot(ss,r.);hold off;名师资料总结 - - -精品资料欢迎下载 - - - - - - - - -
18、 - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 19 页 - - - - - - - - - 7 图 11 对图 10 所示程序,如果输入数据是奇数,重构后的点或多一个,不过最后两个点值一样,这也许是 idwt函数考虑得不全面所致。如下图所示。图 12 clear;load noissin;s=noissin(1:7);ca1,cd1 = dwt(s,db2); ss = idwt(ca1,cd1,db2); plot(s);hold on ;plot(ss,r.);hold off;名师资料总结 - - -精品资料欢迎下载 - - - - -
19、- - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 19 页 - - - - - - - - - 8 图 13 3 wavedec函数wavedec函数是多尺度一维小波离散分解函数。wavedec performs a multilevel one-dimensional wavelet analysis using either a specific wavelet (wname) or a specific wavelet decomposition filters (Lo_D and Hi_D, see wfilters). C,
20、L = wavedec(X,N,wname) returns the wavelet decomposition of the signal X at level N, using wname. N must be a strictly positive integer (see wmaxlev for more information). The output decomposition structure contains the wavelet decomposition vector C and the bookkeeping vector L. The structure is or
21、ganized as in this level-3 decomposition example: 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 19 页 - - - - - - - - - 9 图 14 wavedec函数中的核心函数为dwt 函数,作多少尺度的分解就调用几次dwt 函数。4 waverec函数waverec函数是多尺度一维离散小波重构函数。waverec performs a multilevel one-dimensional wavelet re
22、construction using either a specific wavelet (wname, see wfilters) or specific reconstruction filters (Lo_R and Hi_R). waverec is the inverse function of wavedec in the sense that the abstract statement waverec(wavedec(X,N,wname),wname) returns X. X = waverec(C,L,wname) reconstructs the signal X bas
23、ed on the multilevel wavelet decomposition structure C,L and wavelet wname. (For information about the decomposition structure, see wavedec.) X = waverec(C,L,Lo_R,Hi_R) reconstructs the signal X as above, using the reconstruction filters you specify. Lo_R is the reconstruction low-pass filter and Hi
24、_R is the reconstruction high-pass filter. Note that X = waverec(C,L,wname) is equivalent to X = appcoef(C,L,wname,0). waverec函数中的核心函数是appcoef函数,故先要研究下appcoef函数函数的工作过程。5 appcoef函数appcoef函数为提取一维离散小波近似分量函数。appcoef is a one-dimensional wavelet analysis function. appcoef computes the approximation coeff
25、icients of a one-dimensional signal. 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 19 页 - - - - - - - - - 10 A = appcoef(C,L,wname,N) computes the approximation coefficients at level N using the wavelet decomposition structure C,L (see wavedec for more informa
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年2022年解读matlab之小波库函数 2022 解读 matlab 库函数
限制150内