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

波变换

开发平台:

Matlab

  1. function [LoDN,HiDN,LoRN,HiRN] = liftfilt(LoD,HiD,LoR,HiR,varargin)
  2. %LIFTFILT Apply elementary lifting steps on filters.
  3. %   [LoDN,HiDN,LoRN,HiRN] = LIFTFILT(LoD,HiD,LoR,HiR,ELS) 
  4. %   returns the four filters LoDN, HiDN, LoRN, HiRN 
  5. %   obtained by an "elementary lifting step" (ELS) starting  
  6. %   from the four filters LoD, HiD, LoR and HiR.
  7. %   The four input filters are supposed to verify the 
  8. %   perfect reconstruction condition. 
  9. %
  10. %   ELS is a structure such that:
  11. %     - TYPE = ELS.type contains the "type" of the elementary   
  12. %       lifting step. The valid values for TYPE are: 
  13. %          'p' (primal) or 'd' (dual).
  14. %     - VALUE = ELS.value contains the Laurent polynomial T   
  15. %       associated to the elementary lifting step (see LP).
  16. %       If VALUE is a vector, the associated Laurent polynomial
  17. %       T is equal to laurpoly(VALUE,0).
  18. %
  19. %   In addition, ELS may be a "scaling step". In that case,
  20. %   TYPE is equal to 's' (scaling) and VALUE is a scalar 
  21. %   different from zero.
  22. %
  23. %   LIFTFILT(...,TYPE,VALUE) gives the same outputs.
  24. %
  25. %   Remark:
  26. %     If TYPE = 'p' , HiD and LoR are unchanged.
  27. %     If TYPE = 'd' , LoD and HiR are unchanged.
  28. %     If TYPE = 's' , the four filters are changed.
  29. %
  30. %   If ELS is an array of elementary lifting steps,
  31. %   LIFTFILT(...,ELS) performs each step successively.
  32. %
  33. %   LIFTFILT(...,flagPLOT) plots the successive "biorthogonal"
  34. %   pairs: ("scaling function" , "wavelet").
  35. %
  36. %   See also LP.
  37. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 27-May-2003.
  38. %   Last Revision: 04-Sep-2003.
  39. %   Copyright 1995-2004 The MathWorks, Inc.
  40. %   $Revision: 1.1.6.3 $  $Date: 2004/04/13 00:39:47 $
  41. % Check arguments.
  42. nbIn = nargin;
  43. if nbIn < 4
  44.   error('Not enough input arguments.');
  45. elseif nbIn > 7
  46.   error('Too many input arguments.');
  47. end
  48. [Ha,Ga,Hs,Gs,PRCond,AACond] = filters2lp('b',LoR,LoD);
  49. % Control inputs.
  50. [LoDN,HiDN,LoRN,HiRN] = lp2filters(Ha,Ga,Hs,Gs);
  51. OKLo = isequal(LoD,LoDN) && isequal(LoR,LoRN);
  52. OKHi = (isequal(HiD,HiDN) && isequal(HiR,HiRN)) || ...
  53.        (isequal(HiD,-HiDN) && isequal(HiR,-HiRN));
  54. OKFilters = OKLo && OKHi;
  55. if ~OKFilters
  56.     % error('Invalid input filters');
  57. end
  58. [Ha,Ga,Hs,Gs] = wlift(Ha,Ga,Hs,Gs,varargin{:});
  59. [LoDN,HiDN,LoRN,HiRN] = lp2filters(Ha,Ga,Hs,Gs);