Finding a 2d block with highest average inside a 2d window

Consider a matrix A(52,34) How to find out which 2d block size(3,3) has the highest average in it

 Akzeptierte Antwort

[~, idx] = max(conv2(A, ones(3,3),'same'))
[r, c] = ind2sub(size(A), idx);
r and c is now the index of the center of the block that had the highest average.

2 Kommentare

MSP
MSP am 2 Mär. 2018
Bearbeitet: MSP am 2 Mär. 2018
r and c is supposed to be single values ,isnt it.If I run with A=magic(7) then it does'nt return single values.
[~, idx] = max( reshape(conv2(A, ones(3,3),'same'), [], 1) );
[r, c] = ind2sub(size(A), idx);

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by