как вычислить длины всех поездок из матрицы расстояний TSP в Matlab векторизованным способом - PullRequest
0 голосов
/ 27 мая 2020

Вот исходный код:

n = 5;
D=[0,5,4,3,7;
   5,0,4,6,3;
   4,4,0,5,8;
   3,6,5,0,6;
   7,3,8,6,0];
trips = nchoosek(1:n,2);

Теперь я хочу вычислить длину каждого из рейсов. это можно легко сделать наивным способом.

s= zeros(length(trips),1);
for t=1:length(trips)
    s(i) = D(trips(t,1),trips(t,2));
end

Можно ли это сделать векторизованным способом? Или любым другим более быстрым способом?

1 Ответ

0 голосов
/ 27 мая 2020

Да. Используя sub2ind:

s = D(sub2ind(size(D),trips(:,1), trips(:,2)))
...