www.pudn.com > SPIHT(Matlab).rar > fldwt9_7.asv


function [app_sig,det_sig] = fldwt9_7(input_signal)  
% Function  
% [app_sig,det_sig] = fldwt9_7(input_signal)  
%  
% The forward lifting discrete wavelet transform (FLDWT) using the 9-7 Antonini filters  
 
 
 
[x,y] = size(input_signal);  
 
if x ~=1  
input_signal = input_signal'; %%making it a row vector 变为行向量 
end  
 
alp = -1.586134342;  
bet = -0.05298011854;  
gam = 0.8829110762;  
delt = 0.4435068522;  
psi = 1.149604398;  
%%%已经认为向量个数为偶数? 
s0 = input_signal(1:2:length(input_signal)); %%信号的奇数 %%对信号进行奇偶分裂 
d0 = input_signal(2:2:length(input_signal)); %%信号的偶数 
tt = length(s0);  
 
s0 = [s0 s0(tt-1)]; %将s0倒数第二个数复制到末尾,变为257个元素 
d0 = d0 + alp*(s0(1:length(s0)-1) + s0(2:length(s0))); %%%对d0256个数进行了变化 
 
s0 = s0(1:tt); %%恢复没增加前的s0,即变为256个元素 
d0 = [d0(1) d0]; %%将d0的第一个元素复制一次,放在第一个元素位置,将其它元素顺延 
s0 = s0 + bet*(d0(2:length(d0)) + d0(1:length(d0)-1));  
 
d0 = d0(2:tt+1);%%将d0变为256个元素 
s0 = [s0 s0(tt-1)];  
d0 = d0 + gam*(s0(1:length(s0)-1) + s0(2:length(s0)));  
 
s0 = s0(1:tt);  
d0 = [d0(1) d0];  
s0 = s0 + delt*(d0(2:length(d0)) + d0(1:length(d0)-1));  
 
d0 = d0(2:tt+1);  
app_sig = psi*s0;  
det_sig = (1/psi)*d0;  
 
if x~=1  
app_sig = app_sig';  
det_sig = det_sig';  
end