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

波变换

开发平台:

Matlab

  1. function x = recons(t,node,x,sizes,edges)
  2. %RECONS Reconstruct wavelet packet coefficients.
  3. %   Y = RECONS(T,N,X,S,E) reconstructs the 
  4. %   wavelet packet coefficients X associated with
  5. %   the node N of the wavelet packet tree T,
  6. %   using sizes S and the edges values E.
  7. %   S contains the size of datas associated with
  8. %   each ascendant of N.
  9. %   The children of a node F are numbered from left 
  10. %   to right: [0, ... , ORDER-1].
  11. %   The edge value between F and a child C is the
  12. %   child number.
  13. %
  14. %   This method overloads the DTREE method.
  15. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 18-Oct-96.
  16. %   Last Revision: 21-May-2003.
  17. %   Copyright 1995-2004 The MathWorks, Inc.
  18. %   $Revision: 1.4.4.2 $  $Date: 2004/03/15 22:39:12 $
  19. % Get DWT_Mode
  20. dwtATTR = dwtmode('get');
  21. order = treeord(t);
  22. Lo_R  = t.wavInfo.Lo_R;
  23. Hi_R  = t.wavInfo.Hi_R;
  24. nb_up = length(edges);
  25. f     = zeros(nb_up,length(Lo_R));
  26. switch order
  27.     case 2
  28.         K = find(edges==0);
  29.         if ~isempty(K) , f(K,:) = Lo_R(ones(size(K)),:); end
  30.         K = find(edges==1);
  31.         if ~isempty(K) , f(K,:) = Hi_R(ones(size(K)),:); end
  32.         for k=1:nb_up
  33.             s = max(sizes(k,:));
  34.             x = upsconv1(x,f(k,:),s,dwtATTR);
  35.         end
  36.     case 4
  37.         g = f;
  38.         K = find(edges==0);
  39.         if ~isempty(K)
  40.             f(K,:) = Lo_R(ones(size(K)),:);
  41.             g(K,:) = Lo_R(ones(size(K)),:);
  42.         end
  43.         K = find(edges==1);
  44.         if ~isempty(K)
  45.             f(K,:) = Hi_R(ones(size(K)),:);
  46.             g(K,:) = Lo_R(ones(size(K)),:);
  47.         end
  48.         K = find(edges==2);
  49.         if ~isempty(K)
  50.             f(K,:) = Lo_R(ones(size(K)),:);
  51.             g(K,:) = Hi_R(ones(size(K)),:);
  52.         end
  53.         K = find(edges==3);
  54.         if ~isempty(K)
  55.             f(K,:) = Hi_R(ones(size(K)),:);
  56.             g(K,:) = Hi_R(ones(size(K)),:);
  57.         end
  58.         for k=1:nb_up
  59.             s = sizes(k,:);
  60.             x = upsconv2(x,{f(k,:),g(k,:)},s,dwtATTR);
  61.         end
  62. end