# MATLAB: Finding neighbor value

neighbor

Hi,
suppose I have a large matrix A of size 200X200
I need to know the neighbor value and also the neighbor position of distance 3 of the position (50,50)
can it be done easily
A =
     1     2     3     3     3     6     4     6     8     4     7     7
here (2,2) value is 3. its one distance neighbor is 1,2,3,3,6,4,6,8 and position is (1,1),(1,2),(1,3),(2,1),(2,3), (3,1),(3,2),(3,3)

#### Best Answer

• variant
A = randi(170,200);sz = size(A);center = [50 50];N = 3;Outnum = A(max(abs(repmat(1:sz(2),size(A,1),1) - center(1)) ,...                 abs(repmat((1:sz(1))',1,size(A,2)) - center(2))) == fix(N/2));
more with bwdist from Image Processing Toolbox
A = randi(170,200);sz = size(A);center = [50 50];N = 3;AA = zeros(sz);AA(center(1),center(2)) = 1;Outnum = A(bwdist(AA,'chessboard')==fix(N/2));
Hi Oleg! Variant for N > 3
A = randi(170,17,13);sz = size(A);center = [8 7];N = 5;ons = ones(N);ons(2:end-1,2:end-1) = 0;ij = bsxfun(@plus, center.'-fix(N/2),0:N-1);Outnum = A(ij(1,:),ij(2,:)).*ons;Outnum = Outnum(Outnum>0);