【问题标题】:Compute average distance between vector and its permutations计算向量及其排列之间的平均距离
【发布时间】:2016-05-13 10:36:35
【问题描述】:

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

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

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

【问题讨论】:

  • 我认为对于您的示例,预期距离为 ~1.055。向量有 5 种排列,距离 sqrt(2)(两次)、sqrt(2)/2 和 1.225(也是两次),平均约为 1.055。
  • @David:你说的是欧几里得距离(l2),但问题中的数字与l1-distance相匹配
  • 是的,我对我正在寻找的距离测量并不精确。我实际上只是想计算每两点之间差异的绝对值。
  • @Immo:你实现这个的问题到底是什么?您需要的只是一两个循环,absmean
  • 我现在正在使用mean(mean(abs(bsxfun(@minus,x,x')))),这似乎可以解决问题。

标签: matlab combinations vectorization distance


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-07
      • 2020-03-13
      • 1970-01-01
      • 1970-01-01
      • 2015-01-07
      • 1970-01-01
      相关资源
      最近更新 更多