这里是初始代码:
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)))