function [train_norm, test_norm] = mb_featurenorm(train, test)
% MB_FEATURENORM - Normalize training and test data
%
% [TRAIN_NORM, TEST_NORM] = MB_FEATURENORM(TRAIN, TEST)
% Normalizes the data in train to have mean=0 and variance=1.
% The values used to normalize train are also used to normalize test.
%
% M. Boland - 18 Jan 1999
% $Id: mb_featurenorm.m,v 1.6 1999/05/17 00:13:40 boland Exp $
%
% R - number of training samples
% T - number of test samples
%
R = size(train,1) ;
T = size(test,1) ;
%
% Avoid division by 0 by mapping var~0 to var=1
% NOTE: empirically not necessary -- added after processing
% an incorrect data set (i.e. a single class)
train_sdev = sqrt(var(train)) ;
% train_sdev = train_sdev + (train_sdev < 1e-10 ) ;
%
% Why was this here?
%test_sdev = sqrt(var(test)) ;
% test_sdev = test_sdev + (test_sdev < 1e-10) ;
train_norm = (train-(ones(R,1)*mean(train))) ./ (ones(R,1)*train_sdev);
if (T > 0)
test_norm = (test-(ones(T,1)*mean(train))) ./ (ones(T,1)*train_sdev);
else
test_norm = [] ;
end