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

波变换

开发平台:

Matlab

  1. function y = upsconv1(x,f,s,dwtARG1,dwtARG2)
  2. %UPSCONV1 Upsample and convolution 1D.
  3. %
  4. %   Y = UPSCONV1(X,F_R,L,DWTATTR) returns the length-L central 
  5. %   portion of the one step dyadic interpolation (upsample and
  6. %    convolution) of vector X using filter F_R. The upsample 
  7. %   and convolution attributes are described by DWTATTR.
  8. %   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 06-May-2003.
  9. %   Last Revision: 21-May-2003.
  10. %   Copyright 1995-2004 The MathWorks, Inc.
  11. %   $Revision: 1.1.6.2 $  $Date: 2004/03/15 22:42:00 $
  12. % Special case.
  13. if isempty(x) , y = 0; return; end
  14. % Check arguments for Extension and Shift.
  15. switch nargin
  16.     case 3 , 
  17.         perFLAG  = 0;  
  18.         dwtSHIFT = 0;
  19.     case 4 , % Arg4 is a STRUCT
  20.         perFLAG  = isequal(dwtARG1.extMode,'per');
  21.         dwtSHIFT = mod(dwtARG1.shift1D,2);
  22.     case 5 , 
  23.         perFLAG  = isequal(dwtARG1,'per');
  24.         dwtSHIFT = mod(dwtARG2,2);
  25. end
  26. % Define Length.
  27. lx = 2*length(x);
  28. lf = length(f);
  29. if isempty(s)
  30.     if ~perFLAG , s = lx-lf+2; else , s = lx; end
  31. end
  32. % Compute Upsampling and Convolution.
  33. y = x;
  34. if ~perFLAG
  35.     y = wconv1(dyadup(y,0),f);
  36.     y = wkeep1(y,s,'c',dwtSHIFT);
  37. else
  38.     y = dyadup(y,0,1);
  39.     y = wextend('1D','per',y,lf/2);    
  40.     y = wconv1(y,f);
  41.     y = y(lf:lf+s-1);
  42.     if dwtSHIFT==1 , y = y([2:end,1]); end
  43. end