Counting the number of elements surrounding another element.

11 vues (au cours des 30 derniers jours)
Phillip Smith
Phillip Smith le 25 Nov 2019
Modifié(e) : Andrei Bobrov le 27 Nov 2019
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 commentaires
Adam
Adam le 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 le 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!

Connectez-vous pour commenter.

Réponse acceptée

Turlough Hughes
Turlough Hughes le 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));
  1 commentaire
Phillip Smith
Phillip Smith le 27 Nov 2019
This helped and made me understand my greater goal. Thank you!

Connectez-vous pour commenter.

Plus de réponses (1)

Andrei Bobrov
Andrei Bobrov le 25 Nov 2019
Modifié(e) : Andrei Bobrov le 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');
  2 commentaires
Phillip Smith
Phillip Smith le 25 Nov 2019
could you explain to me what the 2nd line of your code is doing please?
Andrei Bobrov
Andrei Bobrov le 25 Nov 2019
Please read about conv2.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by