【问题标题】:Matlab : How to implement a vectorized version for L1 distance calculationMatlab:如何实现 L1 距离计算的矢量化版本
【发布时间】:2016-12-02 16:58:42
【问题描述】:

我想计算高维向量之间的汉明距离。数据点是称为特征的向量。假设每个分量f_i 是一个整数,它以具有j 位的二进制形式表示。每个数据点都有n = 900 特征组件。问题表述是

下图给出了2个不同向量之间的汉明距离公式j = number of bits

例如让n = 10 功能组件,

f = [3,4,1,4,5,6,6,7,1,14];
g = [1,3,5,6,7,8,11,3,10,2];

数组的每个组件/元素都由其 16 位二进制表示形式表示,使用 dec2bin(f_i,l)

我尝试使用 dist = sum((f-g).^2,2)* 1/2^l 其中 l= 16 位,但这没有意义,因为公式中有 2 个求和。

【问题讨论】:

  • 你的 f 有 11 个元素,g 有 10 个元素,两者都应该是二维的。你能解释一下吗?
  • 在我的应用程序中,它们是二维的,而不是整数值。我想知道如何计算距离,以便以后将其扩展到我的完整应用程序
  • 那么,如果您的应用程序中有 2d,为什么还要给出 1d 示例?
  • 我的印象来自您的尝试:您的表达式中有 1/2^l,但该因子在数学公式中显示为 2^(-j)。其中jb_{ij} 的第二个维度!这就是我问的原因。如果您有二维数组 bfbg,那么计算 abs(bf-bg)*1./(2.^(1:l)).' 或类似的东西就像矩阵向量积一样容易,然后将其相加。

标签: matlab hamming-distance


【解决方案1】:

如果我理解正确,你想要的是

sum(bitxor(f,g))/2^l

在哪里l=16

【讨论】:

    猜你喜欢
    • 2015-03-22
    • 2018-01-30
    • 1970-01-01
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多