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