Sum specific intervals of rows for a matrix

조회 수: 18 (최근 30일)
Timo
Timo 2018년 2월 20일
댓글: Maryam S 2019년 2월 28일
Hello everybody,
I know there are some similar posts regarding the topic but I was not able to solve my problem.
I have a matrix a=53320x228 and wanted to calculate the sum in intervals of 12 for each row (f.e. sum of elements 1:12,13:24... for each row), so that my output would be a 53320x19 matrix as each row has 19*12 elements. In the past I was always able to handle similar problems with:
reshape(sum(reshape(...)))
or
sum(reshape())
But unfortunately, this time I did not recognize how it will work. Other topics related to the problem also suggest to use reshape but it doesn't produce the desired results.
Hopefully someone could help me out, I would really appreciate each hint.

채택된 답변

Aveek Podder
Aveek Podder 2018년 2월 23일
Hi,
I believe you want to sum the 12 consecutive columns of a Matrix and convert it to one column. Doing this Matrix a of size 53320x228 results to a 53320x19 Matrix.
You need to shape the Matrix into a 53320x12x19 Matrix. Then you have to do column summation and reshape the matrix back to 5330x19 Matrix.
Please have a look at the following code:
B = reshape(a,53320,12,19);
C = sum(B,2);
out = reshape(C,53320,19);
Hope this helps.
  댓글 수: 2
Timo
Timo 2018년 2월 26일
편집: Timo 2018년 2월 26일
Thank you so much, I was not aware of this simple possibility and "trick" :)!
Great answer, thanks again!
Greetings
Maryam S
Maryam S 2019년 2월 28일
Hi Aveek, your answer was great hlep to me , thanks!

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Danielle Torp
Danielle Torp 2018년 10월 31일
I have a follow up to this problem- If i wanted to calculate sums in intervals of differing lengths because each column has differing number of rows (i.e. column a = 100 rows, column b = 90 rows), but I want to reshape so each column only has 10 rows (which are sums of equal intervals per column).
  댓글 수: 3
Danielle Torp
Danielle Torp 2018년 11월 1일
Yes, the rest of the column would be blank.
Timo
Timo 2018년 11월 1일
If your Matrix is m Then try sum(reshape(m,10,[]),2) since your Matrix must be filled with NaN or 0s to Form a regular grid. But Maybe i misunderstand u :)?

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by