如何以矢量化方式计算来自matlab中TSP距离矩阵的所有行程的长度

how to compute lengths of all trips from TSP distance matrix in matlab in vectorized fashion

这是初始代码:

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

这可以用矢量化的方式完成吗?或者其他更快的方法?

是的。通过使用 sub2ind:

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