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

波变换

开发平台:

Matlab

  1. function [psi,X] = fbspwavf(LB,UB,N,IN4,IN5,IN6)
  2. %FBSPWAVF Complex Frequency B-Spline wavelet.
  3. %   [PSI,X] = FBSPWAVF(LB,UB,N,M,FB,FC) returns values of
  4. %   the complex Frequency B-Spline wavelet defined by 
  5. %   the order parameter M (M is an integer >=1),
  6. %   a bandwidth parameter FB, and a wavelet center frequency FC.
  7. %
  8. %   The function PSI is computed using the explicit expression:
  9. %   PSI(X) = (FB^0.5)*((sinc(FB*X/M).^M).*exp(2*i*pi*FC*X))
  10. %   on an N point regular grid for 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: 05-Jun-2003.
  18. %   Copyright 1995-2004 The MathWorks, Inc.
  19. %   $Revision: 1.6.4.2 $  $Date: 2004/03/15 22:40:33 $
  20. % Check arguments.
  21. %-----------------
  22. m  = 1;
  23. Fb = 1;
  24. Fc = 1;
  25. nbIn = nargin;
  26. switch nbIn
  27.     case {0,1,2,3} , error('Not enough input arguments.');
  28.     case 5         , error('Invalid number of input arguments.');
  29.     case 6         , m = IN4; Fb = IN5; Fc = IN6;
  30.     case 4
  31.         if ischar(IN4)
  32.             label = deblank(IN4);
  33.             ind   = strncmpi('fbsp',label,4);
  34.             if isequal(ind,1)
  35.                 label([1:4]) = [];
  36.                 len = length(label);
  37.                 if len>0
  38.                     ind = findstr('-',label);
  39.                     if isempty(ind)
  40.                         m = []; % error 
  41.                     else
  42.                         ind = ind(1);
  43.                         m = wstr2num(label(1:ind-1));                
  44.                         label(1:ind) = [];
  45.                         ind = findstr('-',label);
  46.                         if isempty(ind)
  47.                             Fb = []; % error 
  48.                         else
  49.                             Fb = wstr2num(label(1:ind-1));
  50.                             label(1:ind) = [];
  51.                             Fc = wstr2num(label);
  52.                         end              
  53.                     end
  54.                 else
  55.                     Fc = []; % error 
  56.                 end
  57.             else
  58.                 Fc = []; % error 
  59.             end
  60.         else
  61.             Fc = []; % error 
  62.         end
  63. end
  64. err = isempty(m) || isempty(Fc) || isempty(Fb);
  65. if ~err 
  66.     err = ~isnumeric(Fc) || ~isnumeric(Fb) || (Fc<=0) || (Fb<=0);
  67. end
  68. if err
  69.     error('Invalid Wavelet Number!')
  70. end
  71. % Compute values of the Complex Frequency B-Spline wavelet.
  72. X = linspace(LB,UB,N);  % wavelet support.
  73. psi = (Fb^0.5)*((sinc(Fb*X/m).^m).*exp(2*i*pi*Fc*X));
  74. %-----------------------------------------------
  75. function y = sinc(x)
  76. %
  77. %               | sin(pi*x)/(pi*x)  if x ~= 0
  78. % y = sinc(x) = |
  79. %               | 1                 if x == 0
  80. y = ones(size(x));
  81. k = find(x);
  82. y(k) = sin(pi*x(k))./(pi*x(k));
  83. %-----------------------------------------------