How to sum multiple rows elements within the matrix

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

 Accepted 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

More Answers (1)

a=rand(6,7);
b=reshape(a,3,[]);
c=mean(b);
d=reshape(c,2,[]);

1 Comment

Dear Fangjun,
Thank you very much. the concept is very correct, but the output was a matrix of 2x150.

Sign in to comment.

Categories

Products

Release

R2018b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!