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

波变换

开发平台:

Matlab

  1. function F = dbwavf(wname)
  2. %DBWAVF Daubechies wavelet filters.
  3. %   F = DBWAVF(W) returns the scaling filter
  4. %   associated with Daubechies wavelet specified
  5. %   by the string W where W = 'dbN'.
  6. %   Possible values for N are:
  7. %      N = 1, 2, 3, ... , 45.
  8. %
  9. %   See also DBAUX, WAVEINFO, WFILTERS.
  10. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 12-Mar-96.
  11. %   Last Revision: 22-May-2003.
  12. %   Copyright 1995-2004 The MathWorks, Inc.
  13. % $Revision: 1.11.4.2 $
  14. % Check arguments.
  15. if nargin==0
  16.     F = 45; 
  17.    % F contains the number max for Daubechies wavelet.
  18.     return
  19. end
  20. if lower(wname(1:2))=='ha'
  21.     num = 1;
  22. else
  23.     lw = length(wname); ab = abs(wname);
  24.     ii = lw+1; 
  25.     while (ii>1) && (47<ab(ii-1)) && (ab(ii-1)<58) , ii = ii-1; end
  26.     num = wstr2num(wname(ii:lw));
  27. end
  28. switch num
  29.   case 1
  30.   F = [...
  31.    0.50000000000000   0.50000000000000  ...
  32.                 ];
  33.   case 2
  34.   F = [...
  35.    0.34150635094622   0.59150635094587   0.15849364905378  -0.09150635094587 ...
  36.                 ];
  37.   case 3
  38.   F = [...
  39.    0.23523360389270   0.57055845791731   0.32518250026371  -0.09546720778426 ...
  40.   -0.06041610415535   0.02490874986589                                       ...
  41.                 ];
  42.   case 4
  43.   F = [...
  44.    0.16290171402562   0.50547285754565   0.44610006912319  -0.01978751311791 ...
  45.   -0.13225358368437   0.02180815023739   0.02325180053556  -0.00749349466513 ...
  46.                 ];
  47.   case 5
  48.   F = [...
  49.    0.11320949129173   0.42697177135271   0.51216347213016   0.09788348067375 ...
  50.   -0.17132835769133  -0.02280056594205   0.05485132932108  -0.00441340005433 ...
  51.   -0.00889593505093   0.00235871396920                                       ...
  52.                 ];
  53.   case 6
  54.   F = [...
  55.    0.07887121600143   0.34975190703757   0.53113187994121   0.22291566146505 ...
  56.   -0.15999329944587  -0.09175903203003   0.06894404648720   0.01946160485396 ...
  57.   -0.02233187416548   0.00039162557603   0.00337803118151  -0.00076176690258 ...
  58.                 ];
  59.   case 7
  60.   F = [...
  61.    0.05504971537285   0.28039564181304   0.51557424581833   0.33218624110566 ...
  62.   -0.10175691123173  -0.15841750564054   0.05042323250485   0.05700172257986 ...
  63.   -0.02689122629486  -0.01171997078235   0.00887489618962   0.00030375749776 ...
  64.   -0.00127395235906   0.00025011342658                                       ...
  65.                 ];
  66.   case 8
  67.   F = [...
  68.    0.03847781105406   0.22123362357624   0.47774307521438   0.41390826621166 ...
  69.   -0.01119286766665  -0.20082931639111   0.00033409704628   0.09103817842345 ...
  70.   -0.01228195052300  -0.03117510332533   0.00988607964808   0.00618442240954 ...
  71.   -0.00344385962813  -0.00027700227421   0.00047761485533  -0.00008306863060 ...
  72.                 ];
  73.   case 9
  74.   F = [...
  75.    0.02692517479416   0.17241715192471   0.42767453217028   0.46477285717278 ...
  76.    0.09418477475112  -0.20737588089628  -0.06847677451090   0.10503417113714 ...
  77.    0.02172633772990  -0.04782363205882   0.00017744640673   0.01581208292614 ...
  78.   -0.00333981011324  -0.00302748028715   0.00130648364018   0.00016290733601 ...
  79.   -0.00017816487955   0.00002782275679
  80.                 ];
  81.   case 10
  82.   F = [...
  83.    0.01885857879640   0.13306109139687   0.37278753574266   0.48681405536610 ...
  84.    0.19881887088440  -0.17666810089647  -0.13855493935993   0.09006372426666 ...
  85.    0.06580149355070  -0.05048328559801  -0.02082962404385   0.02348490704841 ...
  86.    0.00255021848393  -0.00758950116768   0.00098666268244   0.00140884329496 ...
  87.   -0.00048497391996  -0.00008235450295   0.00006617718320  -0.00000937920789 ...
  88.                 ];
  89.   otherwise
  90.     if (11<=num) && (num<=45)
  91.        F = dbaux(num);
  92.     else
  93.       errargt(mfilename,'Invalid Daubechies wavelet number !','msg');
  94.       error('*');
  95.    end
  96. end