MATLAB: Subtract mean from each table by columns

# vector normalizationMATLABtable

Hello,
Assume we have the following table
t = array2table([rand(10,1),rand(10,1),rand(10,1)],'VariableNames',{'feat_1', 'feat_2','feat_3'});
t =
10×3 table
feat_1 feat_2 feat_3
________ ________ _________
0.12991 0.60198 0.82582
0.56882 0.26297 0.53834
0.46939 0.65408 0.99613
0.011902 0.68921 0.078176
0.33712 0.74815 0.44268
0.16218 0.45054 0.10665
0.79428 0.083821 0.9619
0.31122 0.22898 0.0046342
0.52853 0.91334 0.77491
0.16565 0.15238 0.8173
I can get the mean and standard deviation for each solumn using
meanArray = mean(table2array(t,1));
stdArray = std(table2array(t,1));
meanArray =
0.3479 0.4785 0.5547
stdArray =
0.2415 0.2836 0.3793
Is there any vector way to caclulate (element – mean / std) on every element in table without loop and keep the table? Thanks
I know normalize could standardize data but I need to make it in code.

Best Answer

Try this:
t = array2table([rand(10,1),rand(10,1),rand(10,1)],'VariableNames',{'feat_1', 'feat_2','feat_3'})
m = table2array(t);
meanArray = mean(m)
stdArray = std(m)
z = (m - meanArray) ./ stdArray % a matrix
zt = array2table(z, 'VariableNames',{'feat_1', 'feat_2','feat_3'}) % a table