comparing between two arrays

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

A point in the space is represented by 1x3 array not 2x3
Azzi is right. assuming a and b are two points in 3-D space ( each have 3 components), their euclidean distance is: norm(a-b).
you are right, but i'm working in clustering using particle swarm. each particle has 2 clusters, so for me the point (particle)has two objects , so when i said a=[2 3 4 ; 9 8 7] this mean the first row is for cluster 1 in particle 1 and second row is for cluster 2 in particle 1. i hope it's clear
@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.
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)

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

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.

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

out =[ 4.35889894354067 5.38516480713450 5.09901951359278 7.68114574786861 10.7703296142690 5.19615242270663] i notice that first column is distance ab , second column is distance ac , but i didn't understand the third column
distance between a and b
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 Random Number Generation in Help Center and File Exchange

Tags

Asked:

on 6 Oct 2013

Commented:

on 9 Oct 2013

Community Treasure Hunt

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

Start Hunting!