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

波变换

开发平台:

Matlab

  1. function [X,Y,IntVAL] = make_pattern(numEX,NBpts)
  2. %MAKE_PATTERN Make patterns for New Wavelet Tool.
  3. %
  4. %   [X,Y,IntVAL] = MAKE_PATTERN(numEX,NBpts)
  5. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 19-Mar-2003.
  6. %   Last Revision: 11-Jul-2003.
  7. %   Copyright 1995-2004 The MathWorks, Inc.
  8. %   $Revision: 1.1.6.2 $ $Date: 2004/03/15 22:41:14 $ 
  9. if nargin < 1 , numEX =   1; end
  10. if nargin < 2 , NBpts = 256; end
  11. X = linspace(-1,1,NBpts);
  12. switch numEX
  13.     case 1
  14.         C1 = 1; C2 = 0.5;
  15.         Y = (C1*(X>0) + C2*(X<0)).*sin(pi*X);
  16.     case 2
  17.         C1 = 1; C2 = 0.9;
  18.         Y = (C1*(X>0) + C2*(X<0)).*sin(pi*X);
  19.         
  20.     case 3
  21.         C1 = 1; C2 = 1;
  22.         Y = (C1*(X>0) + C2*(X<0)).*sin(pi*X);
  23.         
  24.     case 4
  25.         C1 = 1; C2 = 0.3;
  26.         Y = (C1*(X>0) + C2*(X<0)).*sin(pi*X) + 0.25*sin(4*pi*X);
  27.         
  28.     case 5
  29.         Y = sin(pi*X)+ 0.5*(1-abs(X).^2);
  30.         
  31.     case 6
  32.         Y = sin(2*pi*X)+ 0.5*(1-abs(X).^2);
  33.         
  34.     case 7
  35.         Y = (X>0).*min(X,1-X) + (X<0).*max(X,-(X+1));
  36.         
  37.     case 8
  38.         Y = sign(X);
  39.         
  40.     otherwise   % For test: odd expansion
  41.         numNEXT = round(10*(numEX-fix(numEX)));
  42.         switch numNEXT
  43.             case 0 , V = min([X;1-X;1/4*ones(size(X))]);
  44.             case 1 , V = ((1-abs(X)).*X).^4;
  45.         end
  46.         Maxi = 0.5;
  47.         Y = odd_EXTENT(X,V,Maxi);
  48. end
  49. IntVAL = 0.5*(2/(NBpts-1))*sum(Y(1:end-1)+Y(2:end));
  50. % Make Pattern on [0 1].
  51. X = 0.5*(X+1);
  52. IntVAL = 0.5*IntVAL;
  53. %----------------------------------
  54. function Y = odd_EXTENT(X,V,Maxi)
  55. if nargin<3 , Maxi = 1; end
  56. V = V.*(X > 0);
  57. V = (V + V(end:-1:1));
  58. Y = V.*sign(X);
  59. Y = Maxi*Y/max(abs(Y));
  60. %----------------------------------