MATLAB: Normalize specific data in a table

MATLABnormalizationpreprocessing

I have a set of data (call it 'dataset') which is 20*20 table(actually it is very large). I have converted the table to be matrix and used 'normc' function to do the normalization (preprocessing). My question is normc change all the value of the whole dataset, but the first and the last column is the ID and predict output of the dataset, they should not be change. How can I normalize data without changing the first and last column?(I'm a matlab beginner)

Best Answer

You can work directly on the table using, for example, varfun:
yourtable(:, 2:end) = varfun(@normc, yourtable, 'InputVariables', 2:width(yourtable)) %normalise every column but first.
Or using simple indexing, convert only the portion you want to a matrix and store back into the table:
yourtable{:, 2:end} = normc(yourtable{:, 2:end}) %normalise everything but 1st column