function [xc, xm] = center(x)
%CENTER	  Centers data by subtraction of the mean.
%
%    [XC, XM] = CENTER(X) centers the data in X by subtraction of the
%    mean XM. If X contains NaNs, indicating missing values, the mean
%    of X is computed from the available data.
%
%    See also NANMEAN, MEAN.

  error(nargchk(1,1,nargin))          % check number of input arguments 
  if ndims(x) > 2,  error('X must be vector or 2-D array.'); end
  
  % if x is a vector, make sure it is a row vector
  if length(x)==prod(size(x))         
    x   = x(:);                         
  end 
  [m,n] = size(x);

  % get mean of x
  if any(any(isnan(x)))               % there are missing values in x
    xm  = nanmean(x);
  else                                % no missing values
    xm  = mean(x);
  end

  % remove mean
  xc    = x - repmat(xm, m, 1);       
  
