www.gusucode.com > wavelet工具箱matlab源码程序 > wavelet/wavelet/ls2apmf.m

    function  APMF = ls2apmf(LS)
%LS2APMF Lifting scheme to analyzis polyphase matrix factorization.
%   APMF = LS2APMF(LS) returns the Laurent matrices factorization
%   APMF, corresponding to the lifting scheme LS. APMF is a cell
%   array of Laurent Matrices.
%
%   If LSC is a cell array of lifting schemes, APMFC = LS2APMF(LSC)  
%   returns a cell array of factorizations. For each k, APMFC{k}
%   is a factorization of LSC{k}.
%   
%   Examples:
%      LS = liftwave('db1')
%      APMF = ls2apmf(LS);
%      APMF{:}
%
%      LSC = {liftwave('db1'),liftwave('db2')};
%      LSC{:}
%      APMFC = ls2apmf(LSC);
%      APMFC{1}{:} , APMFC{2}{:} 
%
%   See also APMF2LS, LS2PMF.

%   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 11-Jun-2003.
%   Last Revision: 27-Jun-2003.
%   Copyright 1995-2004 The MathWorks, Inc.

if isempty(LS) , APMF = [];  return; end

cellMODE = ~(isequal(LS{1,1},'p') || ...
             isequal(LS{1,1},'d') || isequal(LS,{1 1,[]}));
if cellMODE
    nbFACT = length(LS);
    APMF = cell(1,nbFACT);
    for k = 1:nbFACT
        APMF{k} = ONE_ls2apmf(LS{k});
    end
else
    APMF = ONE_ls2apmf(LS);
end

%---+---+---+---+---+---+---+---+---+---+---+---+---%
function APMF = ONE_ls2apmf(LS)

nbLIFT = size(LS,1);
APMF = cell(1,nbLIFT);
for jj = nbLIFT:-1:2
    k = 1+nbLIFT-jj;
    P = laurpoly(LS{k,2},'maxDEG',LS{k,3});
    if LS{k,1}=='p'
        APMF{jj} = laurmat({1,P;0,1});
    else
        APMF{jj} = laurmat({1,0;P,1});
    end
end
APMF{1} = laurmat({LS{nbLIFT,1},0;0,LS{nbLIFT,2}});
%---+---+---+---+---+---+---+---+---+---+---+---+---%