Counting the number of elements surrounding another element.

3 visualizzazioni (ultimi 30 giorni)
Hello,
I've created a matrix and have I randomly set one of these matrix elements equal to 1. Now I want to count how many elements are neighbouring it, I am taking into account diagonal neighbours too i.e. a fully surrounded element will have 8 neighbours etc.
Many thanks,
Phill
  2 Commenti
Adam
Adam il 25 Nov 2019
Just determine if it is on an edge (5 neighbours) or a corner (3 neighbours) and if not then as you say, it has 8 neighbours. No need to count them.
Phillip Smith
Phillip Smith il 25 Nov 2019
That works but I want to count the number of 0's around the element (since it's a matrix consisting of only 1's and 0's) and then change one of those 0's into a 1!

Accedi per commentare.

Risposta accettata

Turlough Hughes
Turlough Hughes il 25 Nov 2019
If your matrix is called A. You could find the number of 0's surrounding an element at A(m,n) as follows:
D=padarray(A,[1 1],1,'both');
numberzeros=nnz(~D(m:m+2,n:n+2));

Più risposte (1)

Andrei Bobrov
Andrei Bobrov il 25 Nov 2019
Modificato: Andrei Bobrov il 27 Nov 2019
Let x - your array with ones and zeros:
x = double(rand(10) > .45);
out = conv2(double(~x),[1,1,1;1,0,1;1,1,1],'same');

Categorie

Scopri di più su Statistics and Machine Learning Toolbox in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by