2D moving sum of a matrix
조회 수: 10 (최근 30일)
이전 댓글 표시
Hi there
How do I perform a moving sum within a matrix? I.e.: the result of each index will be the sum of all surrounding indexes, as defined by window lengths (with some edge effects, as with a regular moving sum).
I could definitely set up some basic loop function but I anticipate having to do this quite often and so I wish to find a smarter/faster solution. And I suspect that there definitely is a smarter solution. Like maybe using filter2 or something?
Thanks in advance for all help!
Cheers
Jakob
채택된 답변
Bruno Luong
2020년 8월 16일
편집: Bruno Luong
2020년 8월 16일
Assuming A is your array, w is the window size
% testexample
A=randi(10,5)
movsum(movsum(A,w,1),w,2)
% or
conv2(A, ones(w), 'same')
% or
filter2(ones(w), A, 'same')
추가 답변 (1개)
Walter Roberson
2020년 8월 16일
conv2(YourMatrix, ones(WindowHeight, WindowWidth))
You might want to add options such as 'valid' to control the size of output and the edge effects.
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!