给定body
维数组n
,X
按d
维矩阵d-1
和两个指定维V
;我想要一个函数,它在(p1, p2) <= (n, n)
的维V
上预先形成(p1, p2)
的矩阵乘法。
这是X
:
X
并给出矩阵library(abind)
set.seed(4)
X <- matrix(runif(4), 2, 2)
X <- abind(x, x+5, along = 3)
> a
, , 1
[,1] [,2]
[1,] 1 3
[2,] 2 4
, , 2
[,1] [,2]
[1,] 6 8
[2,] 7 9
V
例如,如果V <- matrix(c(1, 2))
[,1]
[1,] 1
[2,] 2
和p1=2
我想删除以下for循环
p2=1
这里的难点在于我想允许任意维数组(即p1 <- 1
p2 <- 2
a.out <- array(0, c(2, 1, 2))
for (i in 1:dim(a)[2]){
a.out[,,i] <- a[,,i]%*%V # note indexed along other dimension
}
> a.out
, , 1
[,1]
[1,] 7
[2,] 10
, , 2
[,1]
[1,] 22
[2,] 25
可能大于3)。
第一次编辑: 此问题与Indexing slice from 3D Rcpp NumericVector不同,因为我正在讨论任意数量的维度&gt; = 2,问题不仅仅是关于索引。
第二次编辑:
只是为了更清楚一点,这是我想要做的另一个例子。此处n
的维度为4,X
,p1 = 2
,p3=3
维度的X
维度为12.以下代码计算所需内容对于随机p1
和X.out
,结果为X
。
V