# Mean of a subset of columns for every row

3 views (last 30 days)
Perla González Pereyra on 12 Nov 2019
Edited: dpb on 13 Nov 2019
I know there are several question like this, but i want my code be more dinamic and work for every input matrix.
So the problems is this: I have a matrix 34X3000, and I want tho get the mean of 10 columns for every row. The output will be 34x300.
So far I had this, I know the error is for the index but I don't no how to do it. Can you help me?
TotalRecordingTimeSec=length(Data);
timeline=0:binsize:TotalRecordingTimeSec;
AllcelsFR=[];
AllFR=[];
for bb=1:size(Data,1)
for cc=1:size(timeline,2)-1
fh=timeline(cc);
th=timeline(cc+1);
BinData=Data(Data>fh & Data<th);
AllFR=[AllFR;nanmedian(BinData)];
end
AllcelsFR=[AllcelsFR AllFR];
end

dpb on 12 Nov 2019
N=10;
M=reshape(mean(reshape(Data.',N,[])),size(Data,2)/N,[]).';
Perla González Pereyra on 12 Nov 2019
This work pretty well, thank you so much. I have to read reshape again
dpb on 12 Nov 2019
Edited: dpb on 13 Nov 2019
Utilizes that memory storage order in MATLAB is row major and builtin functions such as mean are vectorized to operate by column.
Start with a very small sample dataset like 3x12 or so with N=4, say, that you can verify results by inspection. Then observe each step sequentially at the command line.
(VERY powerful technique)