计算向量与其排列之间的平均距离
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
我有一个向量,比如说 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