Clear Filters
Clear Filters

comparing between two arrays

5 views (last 30 days)
mariam
mariam on 6 Oct 2013
Commented: mariam on 9 Oct 2013
sorry if my question is trivial , but i'm still beginner and need your help. i have 3 points in the space say a , b, c each one is an array 2x3 , say a=[2 3 4 ; 9 8 7] ,b =[ 5 2 1 ; 6 3 2] , c=[ 4 7 1; 1 2 3]. i want to compare the distance between points a and b (dist12) with the distance between a and c (dist13), which is longer? thank you
  5 Comments
Jan
Jan on 7 Oct 2013
@mariam: No, it is not clear enough. "Distance" is defined for single points only. Therefore it is not uniquely defined, what you are looking for.
mariam
mariam on 8 Oct 2013
ok , i will explain with more details , i work in clustering using particle swarm . for example i have 3 particles each one has 2 cluster (this is why each array has two rows). a is particle 1 , b is particle 2 , particle 3 is c . particle 1 (a) is the best solution. so i want to compute the max distance of the particles (b , c ) from particle (a). l know how to compute the euclidean distance from each array to (a). for example distance ab =[ 4.3589 ; 11] and distance ac = [ 5.3852 ;3]. i want to compute max distance .

Sign in to comment.

Answers (2)

David Sanchez
David Sanchez on 7 Oct 2013
a=[2 3 4 ; 9 8 7];
b =[ 5 2 1 ; 6 3 2];
c=[ 4 7 1; 1 2 3];
dist_ab_cluster_1 = norm(b(1,:)-a(1,:));
dist_ab_cluster_2 = norm(b(2,:)-a(2,:));
dist_ac_cluster_1 = norm(c(1,:)-a(1,:));
dist_ac_cluster_2 = norm(c(2,:)-a(2,:));
dist_ab_cluster_1 =
4.3589
dist_ab_cluster_2 =
7.6811
dist_ac_cluster_1 =
5.3852
dist_ac_cluster_2 =
10.7703
  1 Comment
mariam
mariam on 7 Oct 2013
thank you very much , but if i want to treat the particle which contains two cluster as one unit ....i mean to compare between the array p1= [4.3589 ; 7.6811] and p2=[5.3852 ;10.7703] to know which distance is longer . thank you

Sign in to comment.


Andrei Bobrov
Andrei Bobrov on 7 Oct 2013
a=[2 3 4 ; 9 8 7]; b =[ 5 2 1 ; 6 3 2]; c=[ 4 7 1; 1 2 3];
data = cat(3,a,b,c);
s = size(data);
t = reshape(data(:,:,nchoosek(1:s(3),2)') , s(1),s(2),2,[]);
out = squezze(sqrt(sum(diff(t,[],3).^2,2)));
  3 Comments
Andrei Bobrov
Andrei Bobrov on 8 Oct 2013
distance between a and b
mariam
mariam on 9 Oct 2013
ok thank you , but if i want to know which is the max distance what i can do. a-b , or a-c

Sign in to comment.

Categories

Find more on Matrices and Arrays in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!