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

波变换

开发平台:

Matlab

  1. function [out1,xval,out3] = intwave(wname,in2,in3)
  2. %INTWAVE Integrate wavelet function psi.
  3. %   [INTEG,XVAL] = INTWAVE('wname',PREC) computes the integral INTEG,
  4. %   of the wavelet function psi (from -inf to XVAL values).
  5. %   The function psi is approximated on the 2^PREC
  6. %   points grid XVAL where PREC is a positive integer. 
  7. %   'wname' is a string containing the name of the wavelet
  8. %   (see WFILTERS for more information).
  9. %   Output argument INTEG is a real or complex vector 
  10. %   depending on the wavelet type.
  11. %
  12. %   For biorthogonal wavelets:
  13. %   [INTDEC,XVAL,INTREC] = INTWAVE('wname',PREC)
  14. %   computes the integrals INTDEC and INTREC of the wavelet 
  15. %   decomposition function psi_dec and the wavelet 
  16. %   reconstruction function psi_rec.
  17. %
  18. %   INTWAVE('wname',PREC) is equivalent to
  19. %   INTWAVE('wname',PREC,0).
  20. %   INTWAVE('wname') is equivalent to INTWAVE('wname',8).
  21. %
  22. %   When used with three arguments INTWAVE('wname',IN2,IN3),
  23. %   PREC = MAX(IN2,IN3) and plots are displayed.
  24. %   When IN2 is equal to the special value 0
  25. %   INTWAVE('wname',0) is equivalent to
  26. %   INTWAVE('wname',8,IN3).
  27. %   INTWAVE('wname') is equivalent to INTWAVE('wname',8).
  28. %
  29. %   See also WAVEFUN.
  30. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 12-Mar-96.
  31. %   Last Revision: 17-Jul-2003.
  32. %   Copyright 1995-2004 The MathWorks, Inc.
  33. % $Revision: 1.11.4.2 $
  34. % Check arguments.
  35. iterDEF = 8;
  36. switch nargin 
  37.   case 1 ,
  38.       iter = iterDEF; pflag = 0;
  39.   case 2
  40.       if in2 == 0,
  41.           pflag = 1;
  42.           iter = iterDEF;   
  43.       else
  44.           pflag = 0;
  45.           if isnumeric(in2)
  46.               iter = in2; 
  47.           else
  48.               iter = iterDEF
  49.           end
  50.           
  51.       end
  52.   otherwise
  53.       pflag = 1;
  54.       in2NUM = isnumeric(in2);
  55.       in3NUM = isnumeric(in3);
  56.       if in2NUM
  57.           if in3NUM
  58.               iter = max(in2,in3); 
  59.           else
  60.               iter = in2;
  61.           end
  62.           
  63.       elseif in3NUM
  64.           iter = in3;
  65.       else 
  66.           iter = iterDEF;
  67.       end
  68. end
  69. if iter~=fix(iter) || iter<1 || iter>20
  70.      iter = iterDEF;
  71. end
  72. wtype = wavemngr('type',wname);
  73. switch wtype
  74.   case {1,3} , [phi,psi,xval] = wavefun(wname,iter);
  75.   case 2     , [phi1,psi1,phi2,psi2,xval] = wavefun(wname,iter);
  76.   case {4,5} , [psi,xval] = wavefun(wname,iter);
  77. end
  78. step = xval(2)-xval(1);
  79. switch wtype
  80.   case {1,3,4,5} , out1 = cumsum(psi)*step;
  81.   case 2         , out1 = cumsum(psi1)*step; out3 = cumsum(psi2)*step;
  82. end
  83. if pflag
  84.     switch wtype
  85.       case {1,3,4}
  86.         ax(1) = subplot(211); plot(xval,psi,'r'); title('psi function');grid
  87.         ax(2) = subplot(212); plot(xval,out1,'g');
  88.         title('psi function integral value from 0 to x-value');grid
  89.         set(ax,'Xlim',[xval(1),xval(end)])
  90.       case 2
  91.         ax(1) = subplot(221);
  92.         plot(xval,psi1,'r');title('psi dec. funct.');grid
  93.         ax(2) = subplot(222); plot(xval,out1,'g');
  94.         title('psi dec. funct. integ. value from 0 to x-value');grid
  95.         ax(3) = subplot(223);
  96.         plot(xval,psi2,'r');title('psi rec. funct');grid
  97.         ax(4) = subplot(224);plot(xval,out3,'g');
  98.         title('psi rec. funct. integ. value from 0 to x-value');grid
  99.         set(ax,'Xlim',[xval(1),xval(end)])
  100.       case {5}
  101.         ax(1) = subplot(221);
  102.         plot(xval,real(psi),'r');title('real part of psi funct.');grid
  103.         ax(2) = subplot(222);plot(xval,real(out1),'g');
  104.         title('real part of psi funct. integ. value from 0 to x-value');grid
  105.         ax(3) = subplot(223);
  106.         plot(xval,imag(psi),'r');title('imag. part of psi funct');grid
  107.         ax(4) = subplot(224);plot(xval,imag(out1),'g');
  108.         title('imag. part of psi funct. integ. value from 0 to x-value');grid
  109.         set(ax,'Xlim',[xval(1),xval(end)])
  110.     end
  111. end