MATLAB: Does “mapstd” returns unexpected dimensions when I apply it to a new sample data

Deep Learning Toolboxmapstd

Why does "mapstd" returns unexpected dimensions when I apply it to a new sample data?
I have 4 sample data, each containing 2 predictor variables:
 
>> X = [ 2 1;
5 0;
3 0;
4 2];
I standardize this using "mapstd" as follow:
 
>> [Xnew, PS] = mapstd(X);
However, when I try standardizing a single new sample data "Xtest", it produces a 4×2 array instead of 1×2 array:
>> Xtest = [2 3];
>> XtestNew = mapstd('apply', Xtest, PS)
XtestNew =
0.7071 2.1213
-0.1414 0.1414
0.2357 0.7071
-0.7071 0

Best Answer

The "mapstd" function normalizes the input data row-wise (horizontally). Therefore, with your current implementation, you are actually normalizing each sample individually since you are putting your data one above the other in the following format (4 rows x 2 columns):
X =
[ sample1
sample2
sample3
sample4 ]
 In order to use "mapstd" function to normalize each of your 2 predictor variables, you would need to store your data in the following format (2 row x 4 columns):
X = [ sample1 sample2 sample3 sample4]
 Then, you can use "mapstd" function and get 2 means and 2 standard deviations (one for each predictor variable).
 Making the necessary modification to the original data:
 
>> X = X'; % store sample column by column instead
>> [Xnew, PS] = mapstd(X);
>> XtestNew = mapstd('apply', Xtest, PS);