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

波变换

开发平台:

Matlab

  1. function t = write(t,varargin)
  2. %WRITE Write values in WPTREE object fields.
  3. %   T = write(T,'cfs',NODE,COEFS) writes coefficients for the
  4. %   terminal node NODE.
  5. %
  6. %   T = write(T,'cfs',N1,CFS1,'cfs',N2,CFS2, ...) writes coefficients
  7. %   for the terminal nodes N1, N2, ...
  8. %
  9. %   Caution:
  10. %     The cofficients values has to have the suitable sizes.
  11. %     Use S = READ(T,'sizes',NODE) or S = READ(T,'sizes',[N1;N2; ... ])
  12. %     to get those sizes.
  13. %
  14. %   Examples:
  15. %     % Create a wavelet packets tree.
  16. %     x = rand(1,512);
  17. %     t = wpdec(x,3,'db3');
  18. %     t = wpjoin(t,[4;5]);
  19. %     plot(t);
  20. %
  21. %     % Write values.
  22. %     sNod = read(t,'sizes',[4,5]);
  23. %     cfs4  = zeros(sNod(1,:));
  24. %     cfs5  = zeros(sNod(2,:));
  25. %     t = write(t,'cfs',4,cfs4,'cfs',5,cfs5);
  26. %
  27. %   See also DISP, GET, READ, SET.
  28. %   INTERNAL OPTIONS :
  29. %----------------------
  30. %   The valid choices for PropName are:
  31. %     'ent', 'ento', 'sizes':
  32. %        Without PropParam or with PropParam = Vector of nodes indices.
  33. %
  34. %     'cfs':  with PropParam = One node indices.
  35. %       ,
  36. %     'allcfs', 'entName', 'entPar', 'wavName': without PropParam.
  37. %     
  38. %     'wfilters':
  39. %        without PropParam or with PropParam = 'd', 'r', 'l', 'h'.
  40. %
  41. %     'data' :
  42. %        without PropParam or
  43. %        with PropParam = One terminal node indices or
  44. %             PropParam = Vector terminal node indices.
  45. %        In the last case, the PropValue is a cell array.
  46. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 01-Jan-97.
  47. %   Last Revision: 22-May-2003.
  48. %   Copyright 1995-2004 The MathWorks, Inc.
  49. %   $Revision: 1.5.4.2 $  $Date: 2004/03/15 22:39:29 $
  50. nbin = length(varargin);
  51. k = 1;
  52. while k<=nbin
  53.     argNAME = lower(varargin{k});
  54.     switch argNAME
  55.         case {'ent','ento'}
  56.             if isequal(argNAME,'ent') , col = 4; else , col = 5; end
  57.             kplus = 0;
  58.             if k<nbin-1
  59.                  arg = varargin{k+2};
  60.                  if ischar(arg) && ~strcmp(arg,'all')
  61.                      arg = 'all';
  62.                  else
  63.                      kplus = 1;
  64.                  end
  65.             else
  66.                  arg = 'all';
  67.             end
  68.             t = fmdtree('an_write',t,varargin{k+1},arg,col);
  69.             k = k + kplus;
  70.         case 'cfs'
  71.             if k>=nbin-1
  72.                 errargt(mfilename,'invalid number of arguments ... ','msg');
  73.                 error('*');
  74.             end
  75.             t = write(t,'data',varargin{k+1:k+2});
  76.             k = k+1;
  77.         case 'allcfs'  , t = write(t,'data',varargin{k+1});
  78.         case 'entname' , t.entInfo.entName = varargin{k+1};
  79.         case 'entpar'  , t.entInfo.entPar  = varargin{k+1};
  80.         case 'wavname'
  81.             t.wavInfo.wavName = varargin{k+1};
  82.             [t.wavInfo.Lo_D,t.wavInfo.Hi_D, ...
  83.              t.wavInfo.Lo_R,t.wavInfo.Hi_R] = wfilters(varargin{k+1});
  84.         case 'data',
  85.             if k<nbin-1 && isnumeric(varargin{k+2})
  86.                 t.dtree = write(t.dtree,'data',varargin{k+1:k+2});
  87.                 k = k+1;
  88.             else
  89.                 t.dtree = write(t.dtree,'data',varargin{k+1});
  90.             end
  91.         otherwise
  92.             error('Unknow argNAME ...');
  93.     end
  94.     k = k+2;
  95. end