解读matlab之小波库函数,解读matlab之小波库函数

《解读matlab之小波库函数》由会员分享,可在线阅读,更多相关《解读matlab之小波库函数(19页珍藏版)》请在金锄头文库上搜索。

1、1解读 matlab 之小波库函数南京理工大学仪器科学与技术专业 谭彩铭2010-4-2使用的 matlab 软件版本为 matlab7.11 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 为一维或二维矩阵,其计算过程可由下式表示12121212(,)(,),)kcnabnk式(2)The size of c in each dimension is equal to the sum of the corresponding dimensions of the input matrices, minus one. T。

3、hat 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.其计算过程可以由下表表示表 1c(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,:) 2下面研究一下 conv2 函数中的valid参数的用法。The formula is c=con。

4、v2(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 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),它的计算过。

5、程可由下图表示,其中 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完成。第二部分:卷积运算,它主要由函数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)在看第二部分,。

6、仔细分析子程序部分,核心语句有z=conv2(y,Lo_D,valid); 这里设Lo_D= h(1) h(2) h(3) h(4)。结合图2所示对conv2函数用法的介绍,绘制下图表示该处卷积的计算过程。3图3由此可见,小波库函数dwt中是如何处理边缘点的。最后就是下采样,其下采样是按照式a = z(2:2:length(z)进行的,高频低频部分均如此,项数为floor((7+4-1)/2 )。2 idwt函数idwt函数是单尺度一维离散小波逆变换函数。小波重构函数的核心函数为上采样函数dyadup和卷积运算函数conv2。下面先简要看一看dyadup函数。dyadup implements。

7、 a simple zero-padding scheme 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 integ。

8、er EVENODD: If EVENODD is even, 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,该函数的运算过程可由下表较直接地表示。对一维的情况,就表中所述几种。表 2dyadup(x) 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0dyadup(x,1) 0 1 0 2 0 3。

9、 0 4 0 5 0 6 0 7 0dyadup(x,3) 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0dyadup(x,0) 1 0 2 0 3 0 4 0 5 0 6 0 7dyadup(x,0,1) 1 0 2 0 3 0 4 0 5 0 6 0 7 0dyadup(x,2) 1 0 2 0 3 0 4 0 5 0 6 0 7至于conv2 函数,之前已作介绍。这里要关心的是边界点的处理问题。idwt函数中,对于数值的取舍问题用到的函数为wkeep1,下面先研究下函数wkeep1。(好像在help中搜寻不到,可在命令窗口中输入help wkeep1命令,得到下4列使用说明)。

10、Y = WKEEP1(X,L,OPT) extracts the vector Y from the vector X. The length of Y is L.If OPT = c (l , r, respectively), Y is the central(left, right, respectively) part of X.Y = WKEEP1(X,L,FIRST) returns the vector X(FIRST:FIRST+L-1).Y = WKEEP1(X,L) is equivalent to Y = WKEEP1(X,L,c).下表中列出了iwt函数中用到的两种情况。

11、。设x=1 2 3 4 5 6 7。表 3wkeep1(x,3,c) 3 4 5wkeep1(x,2,c) 3 4下面仔细分析一下边缘点的处理问题。之前在文档中对完全重构滤波器的分解与重构过程已作分析。下列根据理论自己编写的程序便能完成完全重构过程。clear;load noissin;v=noissin(1:6);ca1,cd1,tip1=funbreakupindb2(v);c=funreconstructindb2(ca1,cd1,tip1);plot(v);hold on;plot(c,r.);hold off;图4function ca1,cd1,tip=funbreakupindb。

12、2(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(1,:);x1=x0(1,:);ca1=w1;cd1=x1;5图5function c=funreconstructindb2(ca1,cd1,tip)h0,h1,h2,h3 = wfilters(db2);N=leng。

13、th(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;elseN1=2*N-3;endc=y(4:N1+3);图6图7但是你会发现边缘处的尺度函数系数和小波函数系数偏离的很远,这在阈值滤波时便会在边缘点处产生很大的误差。因为边缘点处没有完全用到4个滤波系数所致。matlab 小波库函数 dwt 中对这个问题的解决方案是边缘延拓,之前已作介绍,如图 3 所6示。这里的描述借助图 3 的描述,依然假设 x=x(1) x。

14、(2) x(3) x(4) x(5) x(6) x(7),计算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(1) x(2) x(3) x(4) x(5) x(6。

15、),作边缘延拓并作卷积运算得到的项数为 15 项,记为 v(1)v(15),再作边缘取舍和下采样后得到项为 z(2), z(4),z(6),z(8)。下图显示了重构过程。图 9从而得证。下图程序是 dwt 和 idwt 函数的简单应用。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;7图 10图 11对图 10 所示程序,如果输入数据是奇数,重构后的点或多一个,不过最后两个点值一样,这也许是 idwt 函数考虑。

16、得不全面所致。如下图所示。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;图 128图 133 wavedec 函数wavedec 函数是多尺度一维小波离散分解函数。wavedec performs a multilevel one-dimensional wavelet analysis using either a specific wavelet (wname) or a specific wavelet decomposition filter。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值