Counting the number of elements surrounding another element.

조회 수: 3 (최근 30일)
Phillip Smith
Phillip Smith 2019년 11월 25일
편집: Andrei Bobrov 2019년 11월 27일
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
Adam
Adam 2019년 11월 25일
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 2019년 11월 25일
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!

댓글을 달려면 로그인하십시오.

채택된 답변

Turlough Hughes
Turlough Hughes 2019년 11월 25일
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
Phillip Smith
Phillip Smith 2019년 11월 27일
This helped and made me understand my greater goal. Thank you!

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Andrei Bobrov
Andrei Bobrov 2019년 11월 25일
편집: Andrei Bobrov 2019년 11월 27일
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
Phillip Smith
Phillip Smith 2019년 11월 25일
could you explain to me what the 2nd line of your code is doing please?
Andrei Bobrov
Andrei Bobrov 2019년 11월 25일
Please read about conv2.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Statistics and Machine Learning Toolbox에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by