我有以下問題一個問題:動態高階行由行產品
假設我有一些矩陣
A1 <- matrix(runif(rowsA1*T), rowsA1, T)
…
AD <- matrix(runif(rowsAD*T), rowsAD, T)
矩陣的數量是可變的(但肯定不是太大)。 是否有執行方式下更有效(但在一個建立,允許矩陣的變量數):
f1 <- function(A1, A2, ..., AD) {
for(i in 1:nrow(A1)) {
for(j in 1:nrow(A2)) {
...
for(d in 1:nrow(AD)) {
ret[i,j,...,d] <- \sum_{t=1}^T (A1[i,t]*A2[j,t]*...*AD[d,t])
}
...
}
}
ret
}
非常感謝您的幫助!
羅曼
----------------------------------用示例編輯---- ------------------------------
A1 <- |a b c| A2 <- |j k l| A3 <- |s t u|
|d e f| |m n o| |v w x|
|g h i| |p q r| |y z ä|
而且我想例如得到以下:
ret[1,1,1] <- a*j*s + b*k*t + c*l*u
ret[2,1,3] <- d*j*y + e*k*z + f*l*ä
希望這可以讓我的觀點更清晰。
---------------------------------- Edit Nov.26th,2013 ------ -------------------------
嗨@flodel。我試圖實現你的代碼,但是一旦有三個以上的矩陣,似乎就會出現問題。
想,我有以下的矩陣
A1 <- matrix(runif(4*3), nrow = 4, ncol = 3)
A2 <- matrix(runif(3*3), nrow = 3, ncol = 3)
A3 <- matrix(runif(2*3), nrow = 2, ncol = 3)
A4 <- matrix(runif(1*3), nrow = 1, ncol = 3)
並pluging到您的代碼
output.f1 <- f1(A1,A2,A3,A4)
提供尺寸
dim(output)
# [1] 4 3 2 1
的正確數量,但輸出是滿的NDA
output.f1
# , , 1, 1
# [,1] [,2] [,3]
# [1,] 0.13534704 NA NA
# [2,] 0.07360135 NA NA
# [3,] 0.07360135 NA NA
# [4,] 0.07360135 NA NA
# , , 2, 1
# [,1] [,2] [,3]
# [1,] NA NA NA
# [2,] NA NA NA
# [3,] NA NA NA
# [4,] NA NA NA
感謝一些幫助......
最佳, 羅曼
'A1,A2,...,AD'具有相同的尺寸,例如,都有3行4列? – zx8754
矩陣'A1,A2,...,AD'具有相同的列數,這是肯定的。但是行數可能不同(但不一定)。 – RomainD
請注意公式的修正。我發現錯誤太晚了。很抱歉,爲了方便! – RomainD