How to find the neighbors of each element in a matrix

조회 수: 70 (최근 30일)
Saou
Saou 2018년 5월 23일
댓글: Dyuman Joshi 2024년 8월 11일
Hi,
how I can find the neighbors of each element in a given matrix? Does such a method exist in Matlab?
Here is an example : A=[3 4 8 6; 1 6 9 0; 2 5 7 1]
The neighbors of A(1,1) are {1, 4, 6}; The neighbors of A(1,2) are {3, 1, 6, 8, 9}; The neighbors of A(2, 1) are {3, 2, 4, 6, 5}; The neighbors of A(2, 2) are {3, 1, 2, 4, 5, 8, 9, 7}
Thanks.
  댓글 수: 1
Mitulkumar Vasani
Mitulkumar Vasani 2021년 3월 17일
이동: Dyuman Joshi 2024년 8월 11일
i have quation regarding finde neighbors for vector
ex. A=[-20 -15 -12 -10 -5 - 3 0 1 2 5 6 8 10]
if i need a to find nearest neighbors for (3)
then as answer will come as 2 and 5
is there any code in matlab?

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

채택된 답변

Stephen23
Stephen23 2018년 5월 23일
편집: Stephen23 2018년 5월 23일
Here is a simple method using conv2:
>> A = [3,4,8,6;1,6,9,0;2,5,7,1];
>> M = zeros(size(A));
>> M(1,1) = 1; % location
>> A(conv2(M,[1,1,1;1,0,1;1,1,1],'same')>0)
ans =
1
4
6
>> M(:) = 0;
>> M(1,2) = 1; % location
>> A(conv2(M,[1,1,1;1,0,1;1,1,1],'same')>0)
ans =
3
1
6
8
9
>> M(:) = 0;
>> M(2,1) = 1; % location
>> A(conv2(M,[1,1,1;1,0,1;1,1,1],'same')>0)
ans =
3
2
4
6
5
>> M(:) = 0;
>> M(2,2) = 1; % location
>> A(conv2(M,[1,1,1;1,0,1;1,1,1],'same')>0)
ans =
3
1
2
4
5
8
9
7
  댓글 수: 2
Emerson Nascimento
Emerson Nascimento 2018년 12월 15일
IT WAS AMAZING !
Dyuman Joshi
Dyuman Joshi 2024년 8월 11일
I have accepted Stephen's answer as it solves the problem with clarity.

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

추가 답변 (2개)

Andrei Bobrov
Andrei Bobrov 2018년 5월 23일
편집: Andrei Bobrov 2018년 5월 23일
s = size(A);
B = zeros(s);
n = numel(A);
out = cell(s);
for ii = 1:n
B(ii) = 1;
out{ii} = A(bwdist(B,'ch') == 1);
B(ii) = 0;
end

KSSV
KSSV 2018년 5월 23일

Community Treasure Hunt

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

Start Hunting!

Translated by