2012-11-13 77 views
11

Tôi có hai vectơ (ma trận hàng đơn). Giả sử rằng chúng ta đã biết độ dài len.Khoảng cách Euclide giữa hai vectơ (ma trận một hàng)

A = [ x1 x2 x3 x4 x5 .... ] 
B = [ y1 y2 y3 y4 y5 .... ] 

Để tính khoảng cách Euclide giữa chúng là phương pháp nhanh nhất là gì. Nỗ lực đầu tiên của tôi là:

diff = A - B 
sum = 0 
for column = 1:len 
    sum += diff(1, column)^2 
distance = sqrt(sum) 

Tôi đã lặp qua phương pháp này hàng triệu lần. Vì vậy, tôi đang tìm cái gì đó nhanh và chính xác. Lưu ý rằng tôi không sử dụng MATLAB và không có sẵn pdist2 API.

Trả lời

31
diff = A - B; 
distance = sqrt(diff * diff'); 

hoặc

distance = norm(A - B); 
0
[val idx] = sort(sum(abs(Ti-Qi)./(1+Ti+Qi))); 

hoặc

[val idx] = sort(sqrt(sum((Ti-Qi).^2))); 

Val là giá trị và idx là giá trị chỉ số ban đầu của cột được sắp xếp sau khi áp dụng khoảng cách Euclide. (Matlab Mã)

0

Để thêm vào @kol câu trả lời,

diff = A - B; 
distance = sqrt(sum(diff * diff')) % sum of squared diff 

hoặc

distance = norm(A-B); 
Các vấn đề liên quan