代码之家  ›  专栏  ›  技术社区  ›  Rodrigo Rodrigues

dist在gpuMatrix中的行为不同,如何获得相同的结果?

  •  1
  • Rodrigo Rodrigues  · 技术社区  · 7 年前

    我试图优化一组点之间的欧几里得距离计算, 在简单矩阵上运行dist时,第一列为x,第二列为y,如下所示:

    m <- matrix(c(3,4,5,6,7,1,2,3,4,5,6) , ncol=2)
    
         [,1] [,2]
    [1,]    3    1
    [2,]    4    2
    [3,]    5    3
    [4,]    6    4
    [5,]    7    5
    

    我得到以下结果:

    dist(m)
             1        2        3        4
    2 1.414214                           
    3 2.828427 1.414214                  
    4 4.242641 2.828427 1.414214         
    5 5.656854 4.242641 2.828427 1.414214
    

    我对第一列特别感兴趣,它有每个点到下一个点的距离。但是,如果我使用gpuR软件包并将此矩阵转换为gpuMatrix,结果会完全不同,我不知道如何解释它,有人能解释一下或给我指出正确的方向吗?我在这个库中找不到关于此函数的有用文档或示例:

    m2 <- gpuMatrix(m)
    dist(m2)[]
             [,1]     [,2] [,3] [,4] [,5]
    [1,] 0.000000 1.414214    0    0    0
    [2,] 1.414214 0.000000    0    0    0
    [3,]      NaN      NaN    0    0    0
    [4,] 2.828427      NaN    0    0    0
    [5,] 4.690416      NaN    0    0    0
    
    0 回复  |  直到 7 年前