计算向量与其排列之间的平均距离

Compute average distance between vector and its permutations

我有一个向量,比如说 x = [1 1.5 2]。我想计算该向量与向量的随机排列之间的预期距离。假设所有排列的可能性均等。

对于上面的例子,解应该是4/9。第一个元素平均变化1/2,第二个元素平均变化1/3,最后一个元素1/2。因此,平均变化为 4/9

问题是这个向量有大约 50-100 个条目。有没有一种聪明的方法来计算这个预期距离?

我现在正在使用 mean(mean(abs(bsxfun(@minus,x,x')))),这似乎可以解决问题。

bsxfun 未提供最快解决方案的罕见情况之一。如果要利用对称性,请使用 pdist

s=sum(pdist(x,'cityblock'))/numel(x).^2*2