Obter os vizinhos de um elemento da matriz
Eu tenho uma matriz e para cada elemento eu quero obter o índice de seus elementos circundantes. Todos esses resultados devem ser armazenados em uma matriz da seguinte maneira. Cada linha da matriz corresponde a um elemento da matriz e cada uma das colunas dessa matriz contém os índices vizinhos. Por exemplo, para uma matriz 4x4, obteremos uma matriz de resultados 16x8. Alguns dos elementos da matriz não têm 8 vizinhos.
Existe um exemplo, acho que está funcionando, existe alguma maneira de evitar o loop ?:
ElementNeighbors = [];
for n = 1:numel(Matrix)
NeighborsMask = [ n-1 n+1 n+size(matrix,1) n-size(Matrix,1) n-size(Matrix,1)-1 n-size(Matrix,1)+1 ...
n+size(Matrix,1)-1 n+size(Matrix,1)+1 ];
ElementNeighbors = [ElementNeighbors ; NeighborsMask ];
end
ElementNeighbors (ElementNeighbors ==0|ElementNeighbors <0) = NaN;