矩阵乘法(逐行)
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
我有一个尺寸为 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