Effacer les filtres
Effacer les filtres

comparing between two arrays

5 vues (au cours des 30 derniers jours)
mariam
mariam le 6 Oct 2013
Commenté : mariam le 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 commentaires
Jan
Jan le 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 le 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 .

Connectez-vous pour commenter.

Réponses (2)

David Sanchez
David Sanchez le 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 commentaire
mariam
mariam le 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

Connectez-vous pour commenter.


Andrei Bobrov
Andrei Bobrov le 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 commentaires
Andrei Bobrov
Andrei Bobrov le 8 Oct 2013
distance between a and b
mariam
mariam le 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

Connectez-vous pour commenter.

Catégories

En savoir plus sur Matrices and Arrays dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by