MATLAB Answers

Counting the number of elements surrounding another element.

2 views (last 30 days)
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 Comments

Adam
Adam on 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 on 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!

Sign in to comment.

Accepted Answer

Turlough Hughes
Turlough Hughes on 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 Comment

Phillip Smith
Phillip Smith on 27 Nov 2019
This helped and made me understand my greater goal. Thank you!

Sign in to comment.

More Answers (1)

Andrei Bobrov
Andrei Bobrov on 25 Nov 2019
Edited: Andrei Bobrov on 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');

Sign in to answer this question.