微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

对R?中给定矩阵中的对进行元素逐矩阵乘法的更简单方法

如何解决对R?中给定矩阵中的对进行元素逐矩阵乘法的更简单方法

我有一个维度为 n * k 的矩阵,我正在尝试计算另一个矩阵,该矩阵具有所有对,它们的对数均为 n(n-1)/ 2 行和 k

新列是两个不同的单独行的逐元素乘法。

下面是代码,我目前如何计算它:

mat = matrix(rnorm(10000,mean = 0,sd = 1),nrow = 100,ncol = 100) # n = 100,k = 100

mat2 = matrix(data = NA,nrow = nrow(mat)*(nrow(mat)-1)/2,ncol = ncol(mat))

counter = 0

for(i in seq(nrow(mat))){
    # print(paste('i',i))
    for(j in seq(nrow(mat))){
        # print(paste('j',j))
        if((i!= j)&(i<j)){
            
            x = mat[i,]*mat[j,]
            # print(x)
            
            mat2 = rbind(mat2,x)
            counter = counter + 1
            print(paste('Counter - ',counter,' : Pair(',i,',j,')',sep = ''))
        }
           
    }
}

尽管使用O(n ^ 2),但它非常强力。有没有办法用更少的时间进行相同的计算?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。