使用R / Rcpp在指定的数组维度上进行矩阵乘法

时间:2017-10-03 00:53:06

标签: r multidimensional-array rcpp

给定body维数组nXd维矩阵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,Xp1 = 2p3=3维度的X维度为12.以下代码计算所需内容对于随机p1X.out,结果为X

V

0 个答案:

没有答案