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

波变换

开发平台:

Matlab

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