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

波变换

开发平台:

Matlab

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