home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / octave-1.1.1p1-src.tgz / tar.out / fsf / octave / scripts / general / prepad.m < prev    next >
Text File  |  1996-09-28  |  838b  |  44 lines

  1. function y = prepad(x,l,c)
  2. #prepad(x,l)
  3. #Prepends zeros to the vector x until it is of length l.
  4. #prepad(x,l,c) prepends the constant c instead of zero.
  5. #
  6. #If length(x) > l, elements from the beginning of x are removed
  7. #until a vector of length l is obtained.
  8.  
  9. # Author:
  10. #  Tony Richardson
  11. #  amr@mpl.ucsd.edu
  12. #  June 1994
  13.  
  14.  
  15.   if(nargin == 2)
  16.     c = 0;
  17.   elseif(nargin<2 || nargin>3)
  18.     usage ("prepad(x,l) or prepad(x,l,c)");
  19.   endif
  20.  
  21.   if(is_matrix(x))
  22.     error("first argument must be a vector");
  23.   elseif(!is_scalar(l))
  24.     error("second argument must be a scaler");
  25.   endif
  26.  
  27.   if(l<0)
  28.     error("second argument must be non-negative");
  29.   endif
  30.  
  31.   lx = length(x);
  32.  
  33.   if(lx >= l)
  34.     y = x(lx-l+1:lx);
  35.   else
  36.     if(rows(x)>1)
  37.       y = [ c*ones(l-lx,1); x ];
  38.     else
  39.       y = [ c*ones(1,l-lx) x ];
  40.     endif
  41.   endif
  42.  
  43. endfunction
  44.