function [coords, values] = h3d_matrix_local_maxima(m) rows = size(m,1); cols = size(m,2); nres = 1; coords = []; values = []; for i=1:rows for j=1:cols if m(i,j) == 0 continue end vals = 0; if i>1; vals = [vals m(i-1, j)]; end if j>1; vals = [vals m(i, j-1)]; end if j1)&&(j>1); vals = [vals m(i-1, j-1)]; end if (i>1)&&(j1); vals = [vals m(i+1, j-1)]; end % Note this gets also the plateau % if sum(find(vals > m(i,j))) == 0 % TODO (why >= doesn't work?) if sum(find(vals > m(i,j))) == 0 coords(1:2,nres) = [i;j]; values(1,nres) = m(i,j); nres = nres + 1; end end end