使用动态规划计算矩阵距离

blueskyddd

我有一个组成值0、1和2的矩阵。值的99%为0。该矩阵有100万行和700列。每行至少有一个非零值。

我需要使用此公式计算每对列之间的距离,以计算x和y之间的距离:D =(Sum(| xi-yi |)/ 2L,i从1到L,L = 1百万,即数量行。

我写了一段R代码,但是计算时间太长,是否可以使用动态编程更快地完成它?这是我的代码:

#mac is the matrix
nCols=ncol(mac)
nRows=nrow(mac)
#the pairwise distance matrix
distMat=matrix(data=-1,nrow=nCols,ncol=nCols)

abs.dist=function(x){return(abs(x[1]-x[2]))} 

for(i in 1:(nCols-1)){
    for(j in (i+1):nCols){
        d1=apply(mac[,c(i,j),1,abs.dist)
        k=sum(d1)/(2*nRows)
        distMat[i,j]=k
        distMat[j,i]=k
    }
}

for(i in 1:nCols) distMat[i,i]=0

非常感谢您的帮助?

恰卡拉卡

我将总结一下评论中已经包含的内容:

#mac is the matrix
nCols=ncol(mac)
nRows=nrow(mac)
#the pairwise distance matrix
distMat=matrix(data=-1,nrow=nCols,ncol=nCols)

for(i in 1:(nCols-1)){
    for(j in (i+1):nCols){
        d1=abs(mac[,i]-mac[,j])
        k=sum(d1)/(2*nRows)
        distMat[i,j]=k
        distMat[j,i]=k
    }
}

diag(distMat) <- 0

对于2000x500矩阵,这大约快100倍。1e6x700矩阵花了大约半分钟。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用自己的计算熊猫创建距离矩阵

来自分类Dev

使用密码计算距离(谷歌地图距离矩阵 API)

来自分类Dev

使用动态规划的背包

来自分类Dev

如何使用动态时间包装获取距离矩阵?

来自分类Dev

使用big.matrix对象计算欧几里得距离矩阵

来自分类Dev

使用CUDA计算矩阵对应行之间的欧几里得距离

来自分类Dev

使用Numpy和Cython加速距离矩阵计算

来自分类Dev

使用矩阵乘法用numpy计算L2距离

来自分类Dev

制作距离矩阵或重复计算距离

来自分类Dev

动态规划:计算中间的超级数

来自分类Dev

使用np矩阵计算来计算一组点之间的距离

来自分类Dev

从预先计算的距离矩阵绘制树状图

来自分类Dev

计算矩阵行之间的余弦距离

来自分类Dev

计算scipy csr矩阵中的欧式距离

来自分类Dev

计算矩阵中的最短距离

来自分类Dev

在矩阵Pandas Python中计算距离

来自分类Dev

R中距离矩阵的计算时间过长

来自分类Dev

如何计算大地理距离矩阵

来自分类Dev

使用熊猫的欧几里得距离矩阵

来自分类Dev

使用动态规划选择最接近对的算法

来自分类Dev

R:使用tm和proxy计算距术语文档矩阵的余弦距离

来自分类Dev

使用Numpy有效地计算欧几里得距离矩阵

来自分类Dev

使用Numpy有效地计算欧几里得距离矩阵

来自分类Dev

R中的动态规划-仓库位置之间距离的算法

来自分类Dev

在距离计算中使用别名

来自分类Dev

使用SparkR计算地理距离

来自分类Dev

将距离矩阵与地点和距离api结合使用

来自分类Dev

如何使用随机距离矩阵构建图?

来自分类Dev

使用阿多尼斯比较距离矩阵