function [feature_train_norm,feature_test_norm]=feature_normalize(feature_train,feature_test,pca_active,dim)
% if pca_active==1,perform pca to reduce the dimensionality of features to dim.
if iscell(feature_train) == 0, feature_train = {feature_train}; end
if iscell(feature_test) == 0, feature_test = {feature_test}; end
N_train_trial=length(feature_train);
feature_train_concat=[];
for i=1:N_train_trial
feature_train_concat=[feature_train_concat,feature_train{1,i}];
end
mean_val=mean(feature_train_concat,2);
std_val=std(feature_train_concat')';
if(pca_active==1)
feature_train_concat=(feature_train_concat-mean_val)./std_val;
covx=cov(feature_train_concat');
[WPCA,LATENT] = pcacov(covx);
end
for i=1:N_train_trial
tmp=(feature_train{1,i}-mean_val)./std_val;
if(pca_active==1)
tmp=tmp'*WPCA(:,1:dim);
tmp=tmp';
end
feature_train_norm{1,i}=tmp;
end
N_test_trial=length(feature_test);
for i=1:N_test_trial
tmp=(feature_test{1,i}-mean_val)./std_val;
if(pca_active==1)
tmp=tmp'*WPCA(:,1:dim);
tmp=tmp';
end
feature_test_norm{1,i}=tmp;
end
if length(feature_test_norm)==1, feature_test_norm = feature_test_norm{1}; end
if length(feature_train_norm)==1, feature_train_norm = feature_train_norm{1}; end