I have matrix A containing 128 columns and m rows. I want to aggregate columns in matrix A based on values in a vector B containing n columns. In the instance that:
A = rand(1000,128);B = [32 45 58 62 73 84 103 112];
I would want to sum columns 1:32 33:45 46:58 59:62 63:73 74:84 85:103 104:112 and 113:128 of matrix A to create a new 1000×9 matrix C. Right now, my code to perform this process is:
C = horzcat(... sum(A(:,1:B(1)),2),... sum(A(:,B(1)+1:B(2)),2),... sum(A(:,B(2)+1:B(3)),2),... sum(A(:,B(3)+1:B(4)),2),... sum(A(:,B(4)+1:B(5)),2),... sum(A(:,B(5)+1:B(6)),2),... sum(A(:,B(6)+1:B(7)),2),... sum(A(:,B(7)+1:B(8)),2),... sum(A(:,B(8)+1:end),2));
I would like to automate this process so that I can change the number of columns in vector B without altering my aggregation code
Many thanks!
Best Answer