# I have a matrix of dimension 180x41 double. First column of the matrix is SubjectID, rest columns are four scores for 10 segments. I need to calculate mean of four scores for each part and store in one matrix. Please Help!

4 views (last 30 days)
Bubblesjinx on 31 Aug 2017
Commented: Bubblesjinx on 31 Aug 2017
The output should look like as:
SUbID MSE1_S1(Mean) MSE2_S2(Mean) MSE3_S3(Mean)...... where MSE1_S1 = mean(MSE_1_S1,MSE_1_S2,MSE_1_S3,MSE_1_S4)

KL on 31 Aug 2017
ind_s = 1:4:size(data,2);
ind_e = 4:4:size(data,2);
for row_no = 1:size(data,1)
mean_arr(row_no,:) = arrayfun(@(a,b) mean(data(row_no,a:b)),ind_s,ind_e);
end
Bubblesjinx on 31 Aug 2017
Thanks a lot, it worked :))

Jan on 31 Aug 2017
Edited: Jan on 31 Aug 2017
Or:
s = size(data);
data = reshape(data, [s(1), 4, s(2) / 4]);
mean4 = squeeze(mean(data, 2));
Bubblesjinx on 31 Aug 2017
Now, I have to apply trapz function to each row ; and make a final matrix which contains sub_ID and AUC score!

KSSV on 31 Aug 2017
Bubblesjinx on 31 Aug 2017
Thanks for your answer. May be my question wasn't clear. I need to make a loop to iterate through rows (180 rows) and each row should calculate mean of four values (MSE_1_S1 to MSE_4_S1 = mean of these four values and there are 40 like them) and store in one matrix.