selfidwt.m
上传用户:sxdygs
上传日期:2013-03-18
资源大小:154k
文件大小:2k
- function out1=selfidwt(in,J)
- %完成J尺度Haar小波反变换
- %in 为输入,J为变换尺度
- g0=[1/sqrt(2),1/sqrt(2)];
- g1=[1/sqrt(2),-1/sqrt(2)];
- m=length(in);
- Wh=zeros(1,round(m/(2^J)));
- Wl=zeros(1,round(m/(2^J)));
- for i=1:J
- %======================先对细节信息进行处理============================
- for j=1:round(m/(2^J))
- Wh(j)=in(round(m/(2^J)+j));
- end
- Wh1=zeros(1,round(m/2^(J-1)));
- for j=1:round(m/2^(J-1)) %内插处理
- if mod(j,2)==0
- Wh1(j)=0;
- else
- Wh1(j)=Wh((j+1)/2);
- end
- end
- Wh=conv(g1,Wh1);
- %====================================================================
- %=====================接着对尺度信息进行处理==========================
- for j=1:round(m/(2^J))
- Wl(j)=in(j);
- end
- Wl1=zeros(1,round(m/2^(J-1)));
- for j=1:round(m/2^(J-1)) %内插
- if mod(j,2)==0
- Wl1(j)=0;
- else
- Wl1(j)=Wl((j+1)/2);
- end
- end
- Wl=conv(g0,Wl1);
- %=====================================================================
- Wl1=Wl+Wh; %把经过上面两步后所得的结果相加
- %============由于卷积处理后会多产生一个0,下面把这个0去掉=============
- Wl=zeros(1,round(m/(2^(J-1))));
- for j=1:round(m/(2^(J-1)))
- Wl(j)=Wl1(j);
- end
- %=====================================================================
- %================用所得到的结果代替输入信号中相应的处理部分===========
- for j=1:round(m/(2^(J-1)))
- in(j)=Wl(j);
- end
- %=====================================================================
- out1=in;
- % m=m*2;
- Wh=zeros(1,round(m/(2^(J-1))));
- Wl=zeros(1,round(m/(2^(J-1))));
- J=J-1;
- end
-
-
-