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

波变换

开发平台:

Matlab

  1. function t = wdectree(x,order,depth,varargin)
  2. %WDECTREE Constructor for the class WDECTREE.
  3. %   T = WDECTREE(X,ORDER,DEPTH,WNAME) returns a wavelet tree T.
  4. %   If X is a vector, the tree is of order 2.
  5. %   If X is a matrix, the tree is of order 4.
  6. %   The DWT extension mode is the current one.
  7. %
  8. %   T = WDECTREE(X,ORDER,DEPTH,WNAME,DWTMODE) returns a wavelet tree T
  9. %   built using DWTMODE as DWT extension mode.
  10. %
  11. %   With T = WDECTREE(X,DEPTH,WNAME,DWTMODE,USERDATA)
  12. %   you may set a userdata field.
  13. %
  14. %   T is a WDECTREE object corresponding to a
  15. %   wavelet decomposition of the matrix (image) X,
  16. %   at level DEPTH with a particular wavelet WNAME.
  17. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi  12-Feb-2003.
  18. %   Last Revision: 14-Jul-2003.
  19. %   Copyright 1995-2004 The MathWorks, Inc.
  20. %   $Revision: 1.1.6.2 $  $Date: 2004/03/15 22:38:58 $ 
  21. %===============================================
  22. % Class WDECTREE (parent class: DTREE)
  23. % Fields:
  24. %   dtree - Parent object
  25. %   WT_Settings - Structure
  26. %     typeWT  : 'dwt' or 'wp'
  27. %     wname   : Wavelet Name.
  28. %     extMode : DWT extension mode.
  29. %     shift   : DWT shift value.
  30. %     Filters : Structure of filters
  31. %        Lo_D : Low Decomposition filter
  32. %        Hi_D : High Decomposition filter
  33. %        Lo_R : Low Reconstruction filter
  34. %        Hi_R : High Reconstruction filter
  35. %===============================================
  36. % Check arguments.
  37. %-----------------
  38. msg = nargoutchk(0,1,nargout); error(msg);
  39. userdata = {};
  40. switch nargin
  41.     case 0 % Dummy. Only for loading object!
  42.         x = 0; order = 2 ; depth = 0;
  43.         WT_Settings = struct(...
  44.             'typeWT','dwt','wname','db1',...
  45.             'extMode','sym','shift',0);
  46.         
  47.     otherwise
  48.         msg = nargchk(3,5,nargin); error(msg);
  49.         if isstruct(varargin{1})
  50.             msg = nargchk(3,5,nargin); error(msg);
  51.             WT_Settings = varargin{1};
  52.             if nargin==5 , userdata = varargin{2}; end
  53.         else
  54.             %   #### Under Development ####
  55.         end
  56. end
  57. % Tree creation.
  58. %---------------
  59. switch WT_Settings.typeWT
  60.     case {'dwt','lwt'}  , spsch = [1 ; zeros(order-1,1)];
  61.     case {'wpt','lwpt'} , spsch = ones(order,1);        
  62. end
  63. d = dtree(order,depth,x,'spsch',spsch,'spflg',0,'ud',userdata);
  64. % Compute Filters.
  65. %-----------------
  66. switch WT_Settings.typeWT
  67.     case {'dwt','wpt'}
  68.         [Lo_D,Hi_D,Lo_R,Hi_R] = wfilters(WT_Settings.wname);
  69.         WT_Settings.Filters = struct('Lo_D',Lo_D,'Hi_D',Hi_D,'Lo_R',Lo_R,'Hi_R',Hi_R);
  70.         
  71.     case {'lwt','lwpt'}
  72.         WT_Settings.LS = liftwave(WT_Settings.wname);
  73. end
  74. t.WT_Settings = WT_Settings;
  75. % Built object.
  76. %---------------
  77. t = class(t,'wdectree',d);
  78. t = expand(t);