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

波变换

开发平台:

Matlab

  1. function LS = liftwave(wname,flag)
  2. %LIFTWAVE Lifting scheme for usual wavelets.
  3. %   LS = LIFTWAVE(WNAME) returns the lifting scheme 
  4. %   associated to the wavelet specified by WNAME.
  5. %
  6. %   LS = LIFTWAVE(WNAME,'Int2Int') allows to perform an
  7. %   integer to integer wavelet transform.
  8. %
  9. %   The valid values for WNAME are:
  10. %      'lazy'
  11. %      'haar', 
  12. %      'db1', 'db2', 'db3', 'db4', 'db5', 'db6', 'db7', 'db8'
  13. %      'sym2', 'sym3', 'sym4', 'sym5', 'sym6', 'sym7', 'sym8'
  14. %      Cohen-Daubechies-Feauveau wavelets:
  15. %         'cdf1.1','cdf1.3','cdf1.5' - 'cdf2.2','cdf2.4','cdf2.6'
  16. %         'cdf3.1','cdf3.3','cdf3.5' - 'cdf4.2','cdf4.4','cdf4.6'
  17. %         'cdf5.1','cdf5.3','cdf5.5' - 'cdf6.2','cdf6.4','cdf6.6'
  18. %      'biorX.Y' , see WAVEINFO
  19. %      'rbioX.Y' , see WAVEINFO
  20. %      'bs3'  : identical to 'cdf4.2'
  21. %      'rbs3' : reverse of 'bs3'
  22. %      '9.7'  : identical to 'bior4.4' 
  23. %      'r9.7' : reverse of '9.7'
  24. %
  25. %      Note:
  26. %        'cdfX.Y' == 'biorX.Y' except for bior4.4 and bior5.5.
  27. %        'rbioX.Y'  is the reverse of 'biorX.Y'
  28. %        'haar' == 'db1' == 'bior1.1' == 'cdf1.1'
  29. %        'db2'  == 'sym2'  and  'db3' == 'sym4'  
  30. %
  31. %   For more information about lifting schemes type: lsinfo.
  32. %      -------------------------------------------------------
  33. %      'db1INT' : Non-normalized integer Haar transform
  34. %      -------------------------------------------------------
  35. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 09-Feb-2000.
  36. %   Last Revision: 11-Jul-2003.
  37. %   Copyright 1995-2004 The MathWorks, Inc.
  38. %   $Revision: 1.1.6.3 $  $Date: 2004/04/13 00:39:48 $
  39. % Check arguments.
  40. tw = wavetype(wname);
  41. if isequal(lower(tw),'unknown')
  42.     error('Invalid wavelet name.');
  43. end
  44. % Get lifting structure.
  45. if isequal(wname,'haar') , wname = 'db1'; end
  46. errNAME = false;
  47. switch wname
  48. case 'lazy' , LS = {[1] [1]  []};       % lazy wavelet
  49. case 'bs3'  , LS = liftwave('cdf4.2');  % cubic B-spline
  50.         
  51.     case 'rbs3' ,
  52.         LS = liftwave('bs3');
  53.         LS(end-1:-1:1,:) = LS(1:end-1,:);
  54.         
  55. case '9.7' , LS = liftwave('bior4.4');  % Quasi-Symmetric wavelet.
  56.         
  57. case 'r9.7'
  58.         LS = liftwave('9.7');
  59.         LS(end-1:-1:1,:) = LS(1:end-1,:);
  60.         
  61.     otherwise       
  62. switch wname(1)
  63.           case 'b' , LS = biorlift(wname);  % Biorthogonal wavelets
  64.           case 'c' ,
  65.               switch wname(2)
  66.                 case 'd' , LS = cdflift(wname);   % C.D.F. wavelets
  67.                 case 'o' , LS = coiflift(wname);  % Coiflets.
  68.                 otherwise , errNAME = true;
  69.               end
  70.           case 'd' , LS = dblift(wname);    % Daubechies wavelets
  71.           case 's' , LS = symlift(wname);   % Symmetric wavelets
  72.           case 'r' ,  % Reverse biorthogonal wavelets
  73.               switch wname(2)
  74.                 case 'b' ,
  75.                     wname(1:4) = 'bior';
  76.                     LS = biorlift(wname); % Reverse biorthogonal wavelets
  77.                 case 'c' , 
  78.                     wname(1:3) = 'cdf';
  79.                     LS = cdflift(wname);   % C.D.F. wavelets
  80.                 otherwise , errNAME = true;
  81.               end
  82.               LS = lsdual(LS);
  83.           otherwise , errNAME = true;
  84. end
  85. end
  86. if errNAME
  87.     error('Invalid wavelet name.');
  88. end
  89. if nargin>1 , LS{end,3} = 'I'; end