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

波变换

开发平台:

Matlab

  1. function [err,idx] = errlsdec(LSTable,tolerance)
  2. %ERRLSDEC Errors for lifting scheme decompositions.
  3. %   For a cell array of lifting schemes LSTAB (or a single
  4. %   Lifting Scheme LS), 
  5. %       ERR = ERRLSDDEC(LSTAB) ( ERR = ERRLSDDEC(LS) ) 
  6. %   returns the numerical errors between random vectors 
  7. %   and the corresponding reconstructed vectors.
  8. %
  9. %   For each Lifting Scheme LS in LSTAB, random vectors
  10. %   are decomposed and then reconstructed with LS. 
  11. %   The error corresponding to LS is the maximum of errors
  12. %   between a random vector and the corresponding reconstructed
  13. %   one. 
  14. %
  15. %   In addition, [ERR,TABTOL] = ERRLSDDEC(LSTAB,TOL) returns
  16. %   a boolean array TABTOL of the same size as LSTAB. TABTOL 
  17. %   is such that TABTOL(k) is equal to 1 if ERR(k) < TOL
  18. %   and 0 otherwise.
  19. %   ERRLSDDEC(LSTAB) is equivalent to ERRLSDDEC(LSTAB,0).
  20. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 30-May-2003.
  21. %   Last Revision 27-Jun-2003.
  22. %   Copyright 1995-2004 The MathWorks, Inc.
  23. %   $Revision: 1.1.6.3 $ $Date: 2004/04/13 00:39:35 $ 
  24. if nargin<2 , tolerance = 0; end
  25. % Test for a single Lifting Scheme.
  26. cellMODE = ~(isequal(LSTable{1,1},'p') || isequal(LSTable{1,1},'d'));
  27. if ~cellMODE , LSTable = {LSTable}; end
  28. nbTST = 5;
  29. nbVAL = 1000;
  30. nbLS = length(LSTable);
  31. err = zeros(1,nbLS);
  32. level = 4;
  33. for i=1:nbTST
  34.     x = rand(1,nbVAL);
  35.     errTMP = zeros(1,nbLS);
  36.     for k=1:nbLS
  37.         LS = LSTable{k};
  38.         x_InPlace = lwt(x,LS,level);
  39.         xREC = ilwt(x_InPlace,LS,level);
  40.         errorTMP = max(abs(x-xREC));
  41.         if errorTMP>err(k)
  42.             err(k) = errorTMP;
  43.         end
  44.     end
  45. end
  46. idx = err < tolerance;