MATLAB: How to sum multiple rows elements within the matrix

average of some rowsMATLAB

I have a matrix with (30*70 ).
Does anybody know how I can calculate the the average of every 3 rows together?
for example : rows from (1-3) to be 1 row and second row to be the average of (4-6) and so on .
the final matrix must be 10*70

Best Answer

Hi Abdulhakim,
The mean and reshape functions are helpful for your case. Here is the code that does what is asked for.
% Consider the input matrix is a
a = rand(30,70);
% Reshape the matrix such a way you have only 3 rows
aReshape = reshape(a,3,[]); % This turns up to 3 x 700
% Use the mean function
avg = mean(aReshape); % This returns the average of 3 elements in each column (1 x 700)
% Now to get the desired ouput in matrix form, perform the reshape again
out = reshape(avg,[],70); % Output size is (10 x 70)
The links to the document page of mean and reshape functions are:
Hope this helps.
Regards,
Sriram