lp2ls.m
上传用户:haiyisale
上传日期:2013-01-09
资源大小:3246k
文件大小:3k
源码类别:

波变换

开发平台:

Matlab

  1. function varargout = lp2ls(Hs,Gs,factMode,tolerance)
  2. %LP2LS Laurent polynomial to lifting schemes.
  3. %   LS = LP2LS(HS,GS,FACTMODE) returns the lifting scheme or 
  4. %   the cell array of lifting schemes LS associated to the 
  5. %   Laurent polynomials HS and GS. FACTMODE indicates the 
  6. %   type of factorization from which LS is issued. The valid
  7. %   values for FACTMODE are: 
  8. %     'd' (dual factorization) or 'p' (primal factorization).
  9. %
  10. %   LS = LP2LS(HS,GS) is equivalent to LS = LP2LS(HS,GS,'d').
  11. %
  12. %   [LS_d,LS_p] = LP2LS(HS,GS,'t') or LS_All = LP2LS(HS,GS,'t')
  13. %   returns the lifting schemes obtained from both factorization.
  14. %
  15. %   In addition, ... = LP2LS(...,TOLERANCE) performs a control
  16. %   about lifting scheme(s) reconstruction property using the
  17. %   tolerance value TOLERANCE. The default value for TOLERANCE
  18. %   is 1.E-8.
  19. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 24-Jun-2003.
  20. %   Last Revision: 27-Jun-2003.
  21. %   Copyright 1995-2004 The MathWorks, Inc.
  22. %   $Revision: 1.1.6.1 $ $Date: 2004/03/15 22:36:36 $ 
  23. % Check input arguments.
  24. switch nargin
  25.     case 2 , tolerance = 1.E-8; factMode = 'd';
  26.     case 3 , tolerance = 1.E-8;
  27. end
  28. factMode = lower(factMode(1));
  29. % Synthesis Polyphase Matrix factorizations
  30. [MatFACT,PolyMAT] = ppmfact(Hs,Gs);
  31. nbFACT = length(MatFACT);
  32. % Compute lifting schemes. 
  33. if nbFACT>0
  34.     switch factMode
  35.         case 't' ,
  36.             % Compute Analyzis Polyphase Matrix Factorizations.
  37.             [dual_APMF,prim_APMF] = pmf2apmf(MatFACT,factMode);
  38.             % Compute Lifting Steps.
  39.             dual_LS = apmf2ls(dual_APMF);
  40.             prim_LS = apmf2ls(prim_APMF);
  41.             
  42.             % Control of the factorizations.
  43.             [dual_errTAB,dual_errFlags] = errlsdec(dual_LS,tolerance);
  44.             [prim_errTAB,prim_errFlags] = errlsdec(prim_LS,tolerance);
  45.             dual_LS = dual_LS(dual_errFlags);
  46.             prim_LS = prim_LS(prim_errFlags);
  47.             switch nargout
  48.                 case 1 , varargout{1} = {dual_LS{:} , prim_LS{:}};
  49.                 case 2 , varargout = {dual_LS , prim_LS};
  50.             end
  51.            
  52.         case {'d','p'} ,  % dual_LS or prim_LS
  53.             % Compute Lifting Steps.
  54.             APMF = pmf2apmf(MatFACT,factMode);
  55.             LS = apmf2ls(APMF);
  56.             
  57.             % Control of the factorizations.
  58.             [errTAB,errFlags] = errlsdec(LS,tolerance);
  59.             LS = LS(errFlags);
  60.             varargout = LS;
  61.             
  62.         otherwise
  63.             error('Invalid value for factorization mode.')
  64.     end
  65. else
  66.     varargout = cell(1,nargout);
  67. end