2016-04-29 4 views
0

У меня есть n точек, которые находятся в k мерном пространстве (n на k матрицу точек данных). Кроме того, у меня есть список пар точек с длиной d (размерность матрицы списка d на 2).Самый быстрый способ вычисления расстояния между списком точек точек

Моя цель - найти евклидово расстояние между каждой парой точек этого списка в векторе длины d.

Что является самым быстрым способом сделать это в MATLAB для длинного списка? Считаете ли вы, что использование C++/python может сильно ускориться?

+3

Это не ясно, что вы хотите, и как связаны между собой две матрицы. Можете ли вы привести пример? Вероятно, 'pdist2' будет полезен –

+0

Больше похоже на pdist, но pdist дает нам n на n матрицу (расстояние между всеми парами). То, что я хочу, - это всего лишь несколько элементов этой n-й матрицы (индекс которой указан нам), эти немногие из двух, но они очень малы, чем n (n-1)/2. Конечно, я могу сделать это с помощью цикла for, но мне было интересно, есть ли более быстрый способ. – questioner

ответ

0
A = [22 44]; 
B= [44 66]; 
tic 
distAB = sqrt((A(1)-B(1))^2+(A(2)-B(2))^2) 
toc 
distAB = 

    31.1127 

Elapsed time is 0.004398 seconds. 

Ну, MATLAB довольно быстро. Просто сделайте цикл for и обновите свои очки с течением времени.

Ваш код должен быть что-то вроде этого:

for i=1:length(d)-1 
distAB(i)=sqrt((d(1,i+1)-d(1,i))^2+(d(2,i+1)-d(2,i))^2) 
end 
Смежные вопросы