如何调整我的函数以乘以多个(随机数)矩阵?
How do I adjust my function to multiply multiple (random number of) matrices?
我编写了以下函数来将两个矩阵 A
和 B
相乘:
f <- function(A,B){
m<-nrow(A)
n<-ncol(A)
n<-nrow(B)
p<-ncol(B)
Result<-matrix(0,nrow = m,ncol = p)
for(i in 1:m){
for(j in 1:p){
for(k in 1:n){
Result[i,j]<-Result[i,j]+A[i,k]*B[k,j]
}
}
}
return(Result)
}
如何将我的函数代码调整为 3 或更多的倍数,即矩阵的随机数而不是 2 个?
你只是迭代地应用双矩阵乘法。设 f
为乘以两个矩阵 A
和 B
的基本函数。通常我们使用内部的 %*%
,但您可以使用问题中定义的那个。
由于矩阵个数未知,建议使用...
。我们通过 list(...)
收集所有输入到 "matrix list" 的矩阵,然后使用 Reduce
累加应用双操作数矩阵乘法。
g <- function (...) Reduce(f, list(...))
请注意,您有责任确保矩阵维度一致,尤其是当您有很多矩阵时。下面以方阵为例
set.seed(0)
A <- matrix(rnorm(4),2)
B <- matrix(rnorm(4),2)
C <- matrix(rnorm(4),2)
f <- "%*%"
g(A, B, C)
# [,1] [,2]
#[1,] -3.753667 0.08634328
#[2,] -0.161250 -1.54194176
这与:
A %*% B %*% C
# [,1] [,2]
#[1,] -3.753667 0.08634328
#[2,] -0.161250 -1.54194176
我编写了以下函数来将两个矩阵 A
和 B
相乘:
f <- function(A,B){
m<-nrow(A)
n<-ncol(A)
n<-nrow(B)
p<-ncol(B)
Result<-matrix(0,nrow = m,ncol = p)
for(i in 1:m){
for(j in 1:p){
for(k in 1:n){
Result[i,j]<-Result[i,j]+A[i,k]*B[k,j]
}
}
}
return(Result)
}
如何将我的函数代码调整为 3 或更多的倍数,即矩阵的随机数而不是 2 个?
你只是迭代地应用双矩阵乘法。设 f
为乘以两个矩阵 A
和 B
的基本函数。通常我们使用内部的 %*%
,但您可以使用问题中定义的那个。
由于矩阵个数未知,建议使用...
。我们通过 list(...)
收集所有输入到 "matrix list" 的矩阵,然后使用 Reduce
累加应用双操作数矩阵乘法。
g <- function (...) Reduce(f, list(...))
请注意,您有责任确保矩阵维度一致,尤其是当您有很多矩阵时。下面以方阵为例
set.seed(0)
A <- matrix(rnorm(4),2)
B <- matrix(rnorm(4),2)
C <- matrix(rnorm(4),2)
f <- "%*%"
g(A, B, C)
# [,1] [,2]
#[1,] -3.753667 0.08634328
#[2,] -0.161250 -1.54194176
这与:
A %*% B %*% C
# [,1] [,2]
#[1,] -3.753667 0.08634328
#[2,] -0.161250 -1.54194176