矩阵乘法(逐行)

问题描述 投票:0回答:1

我有一个维度为1000x100的矩阵。我想逐行制作一个内部产品(每行自己),所以理论上我可以得到一个1000 x 1的矢量。例如:

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的矩阵。

我很感激帮助知道如何进行这种乘法。谢谢。

r error-handling matrix-multiplication
1个回答
3
投票

单独乘以A并取行和:

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

这也有效:

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

这也可以:

diag(tcrossprod(A))
## [1]  5 25
© www.soinside.com 2019 - 2024. All rights reserved.