summing along 3rd dimension every 10 frames

조회 수: 4 (최근 30일)
Lucrezia Cester
Lucrezia Cester 2019년 11월 14일
댓글: the cyclist 2019년 11월 14일
Hello,
I have a matrix of 32x32x2500.
I would like to sum it along the third dimension so to have a matrix of 32x32x250 so that along the third dimesion i have summed 10 paged together thus increasing my SNR.
I have tried with something like
sumby10 = zeros(32,32,2500);
for a = 1:11:2500
sumby10(:,:,a) = sum(micron_59frames(:,:,a:a+9),3);
end
but this does not work as it return a matrix of 32x32x2500.
Could someone help please?

채택된 답변

Philippe Lebel
Philippe Lebel 2019년 11월 14일
I would do:
sumby10 = zeros(32,32,250);
for a = 1:250
sumby10(:,:,a) = sum(micron_59frames(:,:,(a-1)*10+1:(a)*10),3);
end

추가 답변 (2개)

Stephan
Stephan 2019년 11월 14일
편집: Stephan 2019년 11월 14일
If A is your matrix:
B = sum(reshape(A,32,32,10,[]),3);

the cyclist
the cyclist 2019년 11월 14일
편집: the cyclist 2019년 11월 14일
Stephan provided a slick one-liner, but I think it might also be useful for you to see what mistakes you made. Here is a corrected version of your original code:
sumby10 = zeros(32,32,250);
for a = 1:250
idx = (a-1)*10+1:a*10;
sumby10(:,:,a) = sum(micron_59frames(:,:,idx),3);
end
Note a couple things that are different:
  • I preallocated sumby10 to be only length 250 in dimension 3. Your preallocation guaranteed that your result would be the full 2500 in length
  • I re-did the loop index. You were using the loop index "a" to write into "slices" 1,11,22,33 etc of the sumby10 matrix. You were leaving the in-between rows equal to zero -- but they were there.
  • You were confusing the indexing of the old matrix (needed to span all 2500 rows) with indexing of the new matrix (only needs to span 250 rows)
  댓글 수: 2
Philippe Lebel
Philippe Lebel 2019년 11월 14일
HaHA, i got you!
the cyclist
the cyclist 2019년 11월 14일
¯\_(ツ)_/¯

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

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by