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

波变换

开发平台:

Matlab

  1. function varargout = wrepcoef(coefs,longs,levels,notrunc)
  2. %WREPCOEF Replication of coefficients.
  3. %
  4. %   VARARGOUT = WREPCOEF(COEFS,LONGS,LEVELS)
  5. %   VARARGOUT = WREPCOEF(COEFS,LONGS) is equivalent to
  6. %   VARARGOUT = WREPCOEF(COEFS,LONGS,[1:LEVMAX]) where
  7. %   LEVMAX = length(LONGS)-2;
  8. %
  9. %   VARARGOUT = WREPCOEF(COEFS,LONGS,LEVELS,'notrunc')
  10. %
  11. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 07-Sep-98.
  12. %   Last Revision: 07-May-2003.
  13. %   Copyright 1995-2004 The MathWorks, Inc.
  14. %   $Revision: 1.4.4.2 $  $Date: 2004/03/15 22:43:26 $
  15. if nargin<4 , trunc = 1; else , trunc = 0; end
  16. len    = longs(end);
  17. levmax = length(longs)-2;
  18. if nargin<3 , levels = [1:levmax]; end
  19. nblev  = length(levels);
  20. first  = cumsum(longs)+1;
  21. first  = first(end-2:-1:1);
  22. tmp    = longs(end-1:-1:2);
  23. last   = first+tmp-1;
  24. longs  = longs(end-1:-1:2);
  25. repcoefs = cell(1,nblev);
  26. for j = 1:length(levels)
  27.     k = levels(j);
  28.     nbind = 2^k;
  29.     nbcfs = nbind*longs(k);
  30.     tmp   = coefs(first(k):last(k));
  31.     tmp   = tmp(ones(1,nbind),:);
  32.     tmp   = tmp(:)';
  33.     if trunc , tmp   = wkeep1(tmp,len); end
  34.     repcoefs{j} = tmp;
  35. end
  36. if trunc
  37.     varargout{1} = cat(1,repcoefs{:});
  38. else
  39.     varargout{1} = repcoefs;
  40. end