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

波变换

开发平台:

Matlab

  1. function ord = wpfrqord(node)
  2. %WPFRQORD Frequential order for wavelet packets.
  3. %   ord = wpfrqord(node)
  4. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 12-Mar-96.
  5. %   Last Revision: 14-May-2003.
  6. %   Copyright 1995-2004 The MathWorks, Inc.
  7. % $Revision: 1.10.4.2 $
  8. order = 2;
  9. [depths,pos_nat]= ind2depo(order,node);
  10. nbtn = length(pos_nat);
  11. dmax = max(depths);
  12. tmp = zeros(1,2^dmax);
  13. beg = 1;
  14. for k = 1:nbtn
  15.     d   = depths(k);
  16.     len = 2^(dmax-d);
  17.     tmp(beg:beg+len-1) = d;
  18.     beg = beg+len;
  19. end
  20. depths = tmp;
  21. pos = 0;
  22. for d = 1:dmax
  23.     pos = [pos , (2^d-1)-pos];
  24. end
  25. [nul,pos] = sort(pos);
  26. depths = depths(pos);
  27. pos    = pos+2^dmax-2;
  28. for d=dmax-1:-1:1
  29.     tmp = find(depths==d);
  30.     if ~isempty(tmp)
  31.         dd  = dmax-d;
  32.         pow = 2^dd;
  33.         beg = tmp(1:pow:end);
  34.         tmp(1:pow:end) = [];
  35.         pos(beg) = floor((pos(beg)+1-pow)/pow);
  36.         pos(tmp) = NaN;
  37.     end
  38. end
  39. pos = pos(~isnan(pos));
  40. [nul,tmp] = sort(node);
  41. [nul,pos] = sort(pos);
  42. [nul,pos] = sort(pos);
  43. ord       = tmp(pos);