MATLAB Answers

0

I have matrix F (x,y coordinates), which is 1000*2 matrix. i calculated distances between coordinates using PDIST2 command. i want coordinates which are at distance greater than 22?

Asked by M.Prasanna kumar on 4 Feb 2019
Latest activity Commented on by M.Prasanna kumar on 6 Feb 2019
F = [x5;y5]'; % x,y coordinates
distances = pdist2(F,F); %% claculating distances between every coordinate to all other coodinates
closepoints = distances > 22; %% checking the condition
result = find(closepoints==1); %%
based on the logical condition how to get the coordinates (x,y) which are grater than 22

  4 Comments

Show 1 older comment
thank you so much for respoding,
distances(distances>22) is giving distance values. between which coordinates those distances are greater than 22?
So you want to obtain the x and y coordinates when distance is greater than 22 ?

Sign in to comment.

1 Answer

Answer by Akira Agata
on 4 Feb 2019
 Accepted Answer

One possible solution would be like this:
F = [x5;y5]'; % x,y coordinates
D = pdist(F); % pdist function is suitable in this case
idx = squareform(D) > 22;
[p1,p2] = find(triu(idx));
Then, F(p1(i),:) and F(p2(i),:) (for i = 1, ..., numel(p1)) will give the coordinates (x1,y1) and (x2,y2) whose distance are grater than 22.

  7 Comments

Let me clarify with the following simple 4 coordinates example (i.e assuming your matrix size of F is 4x2).
In this case, the coordinate D has a distance greater than 22 from all other coordinates. On the other hand, the coordinates C has a distance > 22 against A and D but < 22 against B.
In this case, what you want to do is to find the coordinates D? or to find all the edges that has a distance > 22?
graph.png
coordinate A(x1,y1)
coordinate B(x2,y2)
coordinate C(x3,y3)
coordinate D(x4,y4)
and so on
distance between A to B, A to C and A to D should be greater than 22
distance between B to A, B to C and B to D should be greater than 22
distance between C to A, C to B and C to D should be greater than 22
distance between D to A, D to B and D to C should be greater than 22
and so on
like that how many such coordinates are possible . i want all such coordinates
for example:
In the above graph coordinate B voilates the condition i explainbed above, where as if we remove coordinate B from graph Coordnates A,B,C satisfies the condition i explained above.
In your case F is 4*2, out of four coordinates 3 coordinates are satisfying the condition (all possible distances between every coordinate to all other coordintes is greater than 22)
suppose In my case F is 1000*2 (randomly generated ) . out ofthousand how many such possible coordinates will satisfy the condition

Sign in to comment.