# choose data points that nears each other and store in different matrix

조회 수: 4(최근 30일)
Laura 2013년 7월 17일
I have a matrix A that has dimension n x 2.
A(:,1) is x-values and A(:,2) is y values.
Choose the the pairs that is near each others within certain distance and store in matrix B that has x value in column 1 and y value in column 2.
Example
A= [1 1 ; 2 2 ; 5 5 ; so on]
let say if the distance we want to set is 2
then dist =sqrt((2-1)^2 +(2-1)^2) = sqrt(2) which is less than 2. So first and second pair are close.
store it in B
B= [1 1 ; 2 2; so on ]
Nothe this is example for 3 pairs and I have n- pair.
Thank you

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

### 채택된 답변

Matt Kindig 2013년 7월 17일
편집: Matt Kindig 2013년 7월 17일
One (non-loop) way:
[x1,x2]=meshgrid(A(:,1));
[y1,y2]=meshgrid(A(:,2));
D = sqrt((x1-x2).^2+(y1-y2).^2); %distance matrix
setDistance = 2;
[r,c]=find(D <= setDistance); %find which pairs are below setDistance.
B = [r,c]; %set of pairs
B(r==c,:)= []; %eliminate points paired with itself.
##### 댓글 수: 5표시숨기기 이전 댓글 수: 4
Matt Kindig 2013년 7월 18일
편집: Matt Kindig 2013년 7월 18일
Right, but this means that B doesn't indicate any information as to which points are members of which pairs. As it stands now, your B just contains points which are members of a pair which is within 2 units of another point; however, the pair correspondence is not present.
If this is what you wish to do, you can add this line of code to the end:
B = A(unique(B(:)),:);
to get that result.
However, you lose the pair information. Really it depends on what you intend to do with the points in B once you've found them.

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

### 범주

Find more on Migrate GUIDE Apps in Help Center and File Exchange

### Community Treasure Hunt

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

Start Hunting!