矩阵乘法(逐行)

Matrix multiplication (row by row)

我有一个尺寸为 1000x100 的矩阵。我想逐行制作一个内积(每行与其自身),所以理论上我可以获得 1000x1 的向量。例如:

A<-matrix(c(1,2,3,4),nrow=2,ncol=2,byrow=2)
     [,1] [,2]
[1,]    1    2
[2,]    3    4

我想要一个像这样的矢量:

              [,1]
[1,]    c(1,2) %*% t(c(1,2))
[2,]    c(3,4) %*% t(c(3,4))  

我尝试循环,但出现错误:

U<-matrix(nrow=1000,ncol=1)
U

k=0
for(i in 1:nrow(U_hat)){
  for(j in 1:nrow(U_hat)){
    k=k+1
    U[k,1]=U_hat[i,]%*%t(U_hat[j,])
  }
}

其中 U_hat 是维度为 1000x100 的矩阵。

如果能帮助我了解如何进行乘法,我将不胜感激。谢谢。

将 A 乘以自身并取行总和:

rowSums(A*A)
## [1]  5 25

这也行得通:

apply(A, 1, crossprod)
## [1]  5 25

这也行得通:

diag(tcrossprod(A))
## [1]  5 25