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

波变换

开发平台:

Matlab

  1. function [psi,X] = shanwavf(LB,UB,N,IN4,IN5)
  2. %SHANWAVF Complex Shannon wavelet.
  3. %   [PSI,X] = SHANWAVF(LB,UB,N,FB,FC) returns values of
  4. %   the complex Shannon wavelet defined by a bandwidth parameter,
  5. %   FB, a wavelet center frequency, FC.
  6. %   FB and FC must be such that FC > 0 and FB > 0.
  7. %
  8. %   The function PSI is computed using the explicit expression:
  9. %   PSI(X) = (FB^0.5)*(sinc(FB*X).*exp(2*i*pi*FC*X))
  10. %   on an N point regular grid in the interval [LB,UB].
  11. %
  12. %   Output arguments are the wavelet function PSI
  13. %   computed on the grid X.
  14. %
  15. %   See also WAVEINFO.
  16. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 09-Jun-99.
  17. %   Last Revision: 14-Jul-2003.
  18. %   Copyright 1995-2004 The MathWorks, Inc.
  19. %   $Revision: 1.6.4.2 $  $Date: 2004/03/15 22:41:42 $
  20. % Check arguments.
  21. %-----------------
  22. Fb = 1;
  23. Fc = 1;
  24. nbIn = nargin;
  25. switch nbIn
  26.     case {0,1,2,3} , error('Not enough input arguments.');
  27.     case 5 , Fb = IN4; Fc = IN5
  28.     case 4
  29.         if ischar(IN4)
  30.             label = deblank(IN4);
  31.             ind   = strncmpi('shan',label,4);
  32.             if isequal(ind,1)
  33.                 label([1:4]) = [];
  34.                 len = length(label);
  35.                 if len>0
  36.                     ind = findstr('-',label);
  37.                     if isempty(ind)
  38.                         Fb = []; % error 
  39.                     else
  40.                         Fb = wstr2num(label(1:ind-1));
  41.                         label(1:ind) = [];
  42.                         Fc = wstr2num(label);    
  43.                     end
  44.                 else
  45.                     Fc = []; % error     
  46.                 end
  47.             else
  48.                 Fc = []; % error 
  49.             end
  50.         else
  51.             Fc = []; % error 
  52.         end
  53. end
  54. err = isempty(Fc) || isempty(Fb);
  55. if ~err 
  56.     err = ~isnumeric(Fc) || ~isnumeric(Fb) || (Fc<=0) || (Fb<=0);
  57. end
  58. if err
  59.     error('Invalid Wavelet Number!')
  60. end
  61. X = linspace(LB,UB,N);  % wavelet support.
  62. psi = (Fb^0.5)*(sinc(Fb*X).*exp(2*i*pi*Fc*X));
  63. function y = sinc(x)
  64. %
  65. %               | sin(pi*x)/(pi*x)  if x ~= 0
  66. % y = sinc(x) = |
  67. %               | 1                 if x == 0
  68. y = ones(size(x));
  69. k = find(x);
  70. y(k) = sin(pi*x(k))./(pi*x(k));