Newbie: Euclidean distance of a matrix??
조회 수: 1 (최근 30일)
이전 댓글 표시
hello all, i am new to use matlab so guys i need ur help in this regards. if i have a mxn matrix e.g
X=[5 3 1; 2 5 6; 1 3 2]
i would like to compute the distance matrix for this given matrix as
D= [d11 d12 d13; d21 d22 d23; d31 d32 d33]
where d(ij)= euclidean distance between row i and j.
in my thinking i applied a for loop like this
% for r=1:rows
% for c=1:cols
% for k=1:3
% d(r,c)= sqrt(sum(a(r,k)-a(c,k)).^2);
% end
% end
% end
but this thing doen't gives the desired result. can some one please correct me and also it would b nice if it would be not only for 3x3 matrix but for any mxn matrix..
thanks alot in advance i wish a nice smilling day
댓글 수: 0
채택된 답변
Sean de Wolski
2012년 4월 23일
Following your rules:
X=[5 3 1; 2 5 6; 1 3 2]; %sample matrix
myEdist = squeeze(sqrt(sum(bsxfun(@minus,X,reshape(X',1,size(X,2),size(X,1))).^2,2))) %Engine
Take the difference of elements in each combination of rows. Square it, sum it, root it, and squeeze it!.
추가 답변 (1개)
Thomas
2012년 4월 23일
Dunno if this is what you need:
X=[5 3 1; 2 5 6; 1 3 2]
for i=1:length(X)
dist(i,:)=pdist(X(:,i),'euclidean')';
end
dist
EDIT
All you need is
X=[5 3 1; 2 5 6; 1 3 2]
pdist(X)
or if you need a 3x3 matrix of output:
for i=1:length(X)
Y=circshift(X,i+1);
q(i,:)=pdist(Y);
q(i,i)=0;
end
q
Using Teja's comment might be the easiest:
X=[5 3 1; 2 5 6; 1 3 2]
squareform(pdist(X));
댓글 수: 2
Teja Muppirala
2012년 4월 23일
X=[5 3 1; 2 5 6; 1 3 2]
squareform(pdist(X))
will convert it into the 3x3 matrix
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrices and Arrays에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!