97小波提升程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
97小波提升程序
function output_signal = bldwt9_7(app_sig,det_sig)
%
% output_signal= bldwt9_7(app_sig,det_sig)
%
% The back lifting discrete wavelet transform (BLDWT) using the 9-7 Antonini filters
% Contact me : swf000117@,,QQ:461414909
[x,y] = size(app_sig);
if x~=1
app_sig = app_sig';
det_sig = det_sig';
end
tt=length(app_sig);
alp = -1.586134342;
bet = -0.05298011854;
gam = 0.8829110762;
delt = 0.4435068522;
psi = 1.149604398;
%d0=det_sig.*psi;
%s0=app_sig./psi;
d0=det_sig;
s0=app_sig;
d0 = [d0(1) d0];
s0 = s0(1:tt);
s0 = s0 - floor(delt*(d0(2:length(d0)) + d0(1:length(d0)-1))+0.5);
d0 = d0(2:tt+1);
s0 = [s0 s0(tt-1)];
d0 = d0 - floor(gam*(s0(1:length(s0)-1) + s0(2:length(s0)))+0.5);
s0 = s0(1:tt);
d0 = [d0(1) d0];
s0 = s0 - floor(bet*(d0(2:length(d0)) + d0(1:length(d0)-1))+0.5);
s0 = [s0 s0(tt-1)];
d0 = d0(2:tt+1);
d0 = d0 -floor( alp*(s0(1:length(s0)-1) + s0(2:length(s0)))+0.5);
s0=s0(1:tt);
output_signal(1:2:2*tt)=s0;
output_signal(2:2:2*tt)=d0;
if x~=1
output_signal=output_signal';
end
function img=d2bldwt9_7(dwt_img,level)
%
% img=d2bldwt9_7(dwt_img,level)
%
% The forward lifting discrete 2-D wavelet transform (D2BLDWT) using the 9-7 Antonini filters
% Contact me : swf000117@,,QQ:461414909
[x,y]=size(dwt_img);
xx=x/(2^level);
yy=y/(2^level);
img=dwt_img;
for i=1:level
for k=1:2*yy
app_sig=img(1:xx,k);
det_sig=img(xx+1:2*xx,k);
img(1:2*xx,k)= bldwt9_7(app_sig,det_sig);
end
for l=1:2*xx
app_sig=img(l,1:xx);
det_sig=img(l,xx+1:2*xx);
img(l,1:2*xx)= bldwt9_7(app_sig,det_sig);
end
xx=2*xx;
yy=2*yy;
end
function [cn,dn]=lifting_db97(x)
%=====该程序对向量进行小波变换,所用的小波为利用提升方案实现的Daubechies 9/7小波=====
% 这是一维小波分解
% cn和dn分别是分解得到的低频向量(概貌系数)和高频向量(细节系数)
% x为待分解的向量
L=floor(length(x)/2);
s0=zeros(1,L); d0=zeros(1,L);
alpha = -1.586134342; beta = -0.05298011854; gamma = 0.8829110762; delta = 0.4435068522;
K = 1.149604398; %设定参数值
for i=1:L %进行奇偶二抽取
s0(i)=x(2*i-1);
d0(i)=x(2*i);
end
s1=s0(2:L);
s1=[s1,s0(L)];
d0=d0+alpha*(s0+s1);
d1=d0(1:L-1);
d1=[d0(1),d1];
s0=s0+beta*(d0+d1);
s1=s0(2:L);
s1=[s1,s0(L)];
d0=d0+gamma*(s0+s1);
d1=d0(1:L-1);
d1=[d0(1),d1];
s0=s0+delta*(d0+d1);
cn=K*s0; dn=d0/K; %求出 cn 和 dn
if L length(x)/2 %保持原向量的长度不变
dn = [dn,dn(L)];
end