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

波变换

开发平台:

Matlab

  1. function [s2,w1,w2,w3,xy] = wavefun2(wname,in2,in3)
  2. %WAVEFUN2 Wavelets and scaling functions 2-D.
  3. %   WAVEFUN2 returns approximations of the wavelet functions
  4. %   'wname' and the associated scaling function.
  5. %
  6. %   [S,W1,W2,W3,XYVAL] = WAVEFUN2('wname',ITER) returns the 
  7. %   scaling function and the three wavelet functions resulting
  8. %   from the tensor products of one dimensional scaling and
  9. %   wavelet functions, for an orthogonal wavelet.
  10. %
  11. %   More precisely, if [PHI,PSI,XVAL] = WAVEFUN('wname',ITER),
  12. %   the scaling function S is the tensor product of PHI and PHI.
  13. %   The wavelet functions W1, W2 and W3 are respectively the tensor
  14. %   product (PHI,PSI), (PSI,PHI) and (PSI,PSI).
  15. %   The two dimensional variable XYVAL is a (2^ITER) x (2^ITER)
  16. %   points grid obtained from the tensor product (XVAL,XVAL).
  17. %   The positive integer ITER is the number of iterations.
  18. %
  19. %   ... = WAVEFUN2(...,'plot') computes and, in addition, 
  20. %   plots the functions.
  21. %
  22. %   WAVEFUN2('wname',A,B), where A and B are positive integers,
  23. %   is equivalent to WAVEFUN2('wname',max(A,B)), and plots are
  24. %   produced.
  25. %   WAVEFUN2('wname',0) is equivalent to WAVEFUN2('wname',4,0).
  26. %   WAVEFUN2('wname')   is equivalent to WAVEFUN2('wname',4).
  27. %
  28. %   See also INTWAVE, WAVEFUN, WAVEINFO, WFILTERS.
  29. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 01-Oct-2000.
  30. %   Last Revision: 14-May-2003.
  31. %   Copyright 1995-2004 The MathWorks, Inc.
  32. %   $Revision: 1.5.4.2 $  $Date: 2004/03/15 22:42:19 $
  33. % Check arguments.
  34. wname = deblankl(wname);
  35. debut = wname(1:2);
  36. [wtype,fname,family,bounds] =  ...
  37.     wavemngr('fields',wname,'type','file','fn','bounds');
  38. % Check arguments.
  39. if ~isequal(wtype,1)
  40. errargt(mfilename,['Invalid wavelet type'],'msg');
  41. error('*');
  42. end
  43. iter = 4; 
  44. pflag = 0;
  45. switch nargin
  46. case 1 , 
  47. case 2 
  48.         if in2 == 0 , pflag = 1; else , iter = in2; end
  49. otherwise
  50.         pflag = 1;
  51.         if  ischar(in2)
  52.             if ~ischar(in3) , iter = in3; end
  53.         else
  54.             if ischar(in3)
  55.                 iter = in2;
  56.             else
  57.                 iter = max(in2,in3);
  58.             end
  59.         end
  60.         if (ischar(iter) | any(iter < 1) | any(iter ~= fix(iter)))
  61.             iter = 4;
  62.         end
  63. end
  64. [s,w,x] = wavefun(wname,iter);
  65. s2 = kron(s,s');
  66. w1 = kron(s,w');
  67. w2 = kron(w,s');
  68. w3 = kron(w,w');
  69. if nargout>4 , xy  = kron(x,x'); end
  70. if pflag
  71. f = figure;
  72. colormap(pink(128));
  73. a(1) = subplot(2,2,1); surf(x,x,s2); shading interp
  74. title('Scale function')
  75. a(2) = subplot(2,2,2); surf(x,x,w1); shading interp
  76. title('Wavelet function (1)')
  77. a(3) = subplot(2,2,3); surf(x,x,w2); shading interp
  78. title('Wavelet function (2)')
  79. a(4) = subplot(2,2,4); surf(x,x,w3); shading interp
  80. title('Wavelet function (3)')
  81. minX = min(x); maxX = max(x);
  82. set(a,'Xlim',[minX,maxX],'Ylim',[minX,maxX])
  83. set(a(1),'Zlim',[min(min(s2)) max(max(s2))]);
  84. set(a(2),'Zlim',[min(min(w1)) max(max(w1))])
  85. set(a(3),'Zlim',[min(min(w2)) max(max(w2))])
  86. set(a(4),'Zlim',[min(min(w3)) max(max(w3))])
  87. set(a,'Xgrid','On','Ygrid','On','Zgrid','On')
  88. end