如何以矢量化方式计算来自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)))
这是初始代码:
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)))