问题描述
我有一个维度为 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 (将#修改为@)