view scripts/general/postpad.m @ 1337:52a3f38cbfeb

[project @ 1995-08-25 02:00:18 by jwe]
author jwe
date Fri, 25 Aug 1995 02:16:01 +0000
parents 3470f1e25a79
children 5cffc4b8de57
line wrap: on
line source

function y = postpad (x, l, c)

# postpad (x, l)
#
# Appends zeros to the vector x until it is of length l.
# postpad (x, l, c) appends the constant c instead of zero.
#
# If length (x) > l, elements from the end of x are removed
# until a vector of length l is obtained.

# Author:
#  Tony Richardson
#  amr@mpl.ucsd.edu
#  June 1994

  if (nargin == 2)
    c = 0;
  elseif (nargin < 2 || nargin > 3)
    usage ("postpad (x, l) or postpad (x, l, c)");
  endif

  if (is_matrix (x))
    error ("first argument must be a vector");
  elseif (! is_scalar (l))
    error ("second argument must be a scaler");
  endif

  if (l < 0)
    error ("second argument must be non-negative");
  endif

  lx = length (x);

  if (lx >= l)
    y = x(1:l);
  else
    if (rows (x) > 1)
      tmp = c * ones (l-lx, 1);
      y = [x; tmp];
    else
      tmp = c * ones (1, l-lx);
      y = [x, tmp];
    endif
  endif

endfunction