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

波变换

开发平台:

Matlab

  1. function t = write(t,varargin)
  2. %WRITE Write values in DTREE object fields.
  3. %   T = write(T,'data',DATA) writes data for all
  4. %   terminal nodes. In this case DATA contains the
  5. %   data associates to all leaves of T. It can be 
  6. %   an array or a cell array.
  7. %
  8. %   T = write(T,'data',NODE,DATA) writes data for the
  9. %   terminal node NODE.
  10. %
  11. %   Caution: Don't use the DTREE WRITE function!
  12. %
  13. %   See also DISP, GET, READ, SET.
  14. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 01-Jan-97.
  15. %   Last Revision: 22-May-2003.
  16. %   Copyright 1995-2004 The MathWorks, Inc.
  17. %   $Revision: 1.5.4.2 $  $Date: 2004/03/15 22:37:38 $
  18. nbin = length(varargin);
  19. k = 1;
  20. while k<=nbin
  21.   argNAME = lower(varargin{k});
  22.   switch argNAME
  23.     case 'data'
  24.         % nextarg  = new data
  25.         % or
  26.         % nextarg = terminal node (index num or depth/pos num)
  27.         % next nextarg = new data
  28.         % out1 = new tree
  29.         %--------------------------------------------------------
  30.         if (k<nbin-1) && ~ischar(varargin{k+2})
  31.             n_rank = istnode(t,varargin{k+1});
  32.             if n_rank ~= 0
  33.                 order = treeord(t);
  34.                 n_rank = depo2ind(order,n_rank);
  35.                 [beg,len,siz]  = fmdtree('tn_beglensiz',t,n_rank);
  36.                 sizcfs  = size(varargin{k+2});
  37.                 if ~isequal(siz,sizcfs)
  38.                     error('Invalid size for coefs.');
  39.                 else
  40.                     t = fmdtree('tn_write',t,n_rank,sizcfs,varargin{k+2});
  41.                     k = k+1;
  42.                 end
  43.             else
  44.                 error('Invalid node value.');
  45.             end
  46.         else
  47.             if ~iscell(varargin{k+1})
  48.                 sizes = fmdtree('tn_read',t,'sizes');
  49.                 t = fmdtree('tn_write',t,sizes,varargin{k+1});
  50.             else
  51.                 tn = leaves(t);
  52.                 n_rank = istnode(t,tn);
  53.                 [beg,len,siz]  = fmdtree('tn_beglensiz',t,n_rank);
  54.                 for j = 1:length(tn)
  55.                     t = fmdtree('tn_write',t,n_rank(j),siz(j,:),varargin{k+1}{j});
  56.                 end
  57.             end
  58.         end
  59.     otherwise
  60.         error('Unknown object field.');
  61.   end
  62.   k = k+2;
  63. end