How to sum multiple rows elements within the matrix

18 ビュー (過去 30 日間)
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

採用された回答

Sriram Tadavarty
Sriram Tadavarty 2020 年 3 月 13 日
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
  1 件のコメント
Abdulhakim  Alezzi
Abdulhakim Alezzi 2020 年 3 月 13 日
Dear Sriram , That is very helpfull, it workd perfectly.

サインインしてコメントする。

その他の回答 (1 件)

Fangjun Jiang
Fangjun Jiang 2020 年 3 月 13 日
a=rand(6,7);
b=reshape(a,3,[]);
c=mean(b);
d=reshape(c,2,[]);
  1 件のコメント
Abdulhakim  Alezzi
Abdulhakim Alezzi 2020 年 3 月 13 日
Dear Fangjun,
Thank you very much. the concept is very correct, but the output was a matrix of 2x150.

サインインしてコメントする。

製品


リリース

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by