I see that you intend to normalize/correct metabolite data for variables like BMI and age. 
Here is a general step by step workflow you can follow to achieve the same. 
1. Load and standardize the data: 
- Load your data into a table with metabolites, BMI and/or age as columns and samples as rows. 
- Standardize the data to have zero mean and unit variance. 
dataTable = readtable('dataFile.csv'); 
standardizedData = zscore(dataTable.Metabolites); 
2. Correct for BMI and Age: 
- You can use linear or polynomial regression to remove the effects of BMI and age from your metabolite data. 
for i = 1:size(standardizedData, 2) 
    lm = fitlm(dataTable, ['Metabolites' num2str(i) ' ~ BMI + Age']); 
    residuals(:, i) = lm.Residuals.Raw; 
end 
- The residuals from the model can be used as the corrected metabolite data, as they represent the part of the metabolite levels not explained by BMI and age. 
- You might want to verify if the residuals are independent of BMI and age by plotting or calculating correlations.
corrplot([residuals, dataTable.BMI, dataTable.Age]); 
3. Save the Corrected Data: 
- Save your corrected data for further analysis. 
correctedDataTable = array2table(residuals, 'VariableNames', dataTable.Properties.VariableNames(1:end-2)); 
writetable(correctedDataTable, 'correctedMetaboliteData.csv'); 
Hope this helps you in normalizing your metabolite data for BMI and age using MATLAB.