# How do i insert one value from one array to another array

9 views (last 30 days)
Lars Urban on 2 Aug 2022
Commented: Lars Urban on 3 Aug 2022
I have 2 arrays with coordinates. For example
A = [1,2;2,1;1,1;1,3;3,2]
A = 5×2
1 2 2 1 1 1 1 3 3 2
B = [0.5,0.5;2,2]
B = 2×2
0.5000 0.5000 2.0000 2.0000
I compute for every point in A the nearest Point from B. I use dsearchn
k = dsearchn(B,A)
k = 5×1
2 2 1 2 2
Now I want to give every point in B the next points from A. Making for every point in B a list of nearest points from A. Like point B(2,:) ans = 2 , 2 has the next points A(1,:),A(2,:),A(4,:) and A(5,:). I have no clue how to do it right and efficient.
##### 2 CommentsShowHide 1 older comment
Lars Urban on 2 Aug 2022
I thought about a structure array where it is divided by coordinate of B in x and y and the a list of double from A.x and A.y

Bruno Luong on 2 Aug 2022
See if s is what you want or not (not clear for me)
A = [1,2;2,1;1,1;1,3;3,2]
A = 5×2
1 2 2 1 1 1 1 3 3 2
B = [0.5,0.5;2,2]
B = 2×2
0.5000 0.5000 2.0000 2.0000
k = dsearchn(B,A)
k = 5×1
2 2 1 2 2
AA = accumarray(k, (1:size(A,1))', [], @(r) {A(r,:)});
s = struct('B', num2cell(B,2), 'A', AA)
s = 2×1 struct array with fields:
B A
s(1).B
ans = 1×2
0.5000 0.5000
s(1).A
ans = 1×2
1 1
s(2).B
ans = 1×2
2 2
s(2).A
ans = 4×2
1 2 2 1 1 3 3 2
##### 1 CommentShowHide None
Lars Urban on 3 Aug 2022
Yes this is what i want at the end. Sorry for the bad description of my problem. Thank you!

### More Answers (1)

David Hill on 2 Aug 2022
Look at pdist2
A = [1,2;2,1;1,1;1,3;3,2] ;
B = [0.5,0.5;2,2];
pdist2(A,B)
ans = 5×2
1.5811 1.0000 1.5811 1.0000 0.7071 1.4142 2.5495 1.4142 2.9155 1.0000
##### 2 CommentsShowHide 1 older comment
David Hill on 2 Aug 2022
I don't understand your comment. Each column above gives the distance between each point in B with all the points in A. You could sort each column and then index into A to provide the sorted listing of the closest points of A to each point in B.