Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 数组乘以矩阵中的单个行_Arrays_R_Matrix_Multiplication - Fatal编程技术网

Arrays 数组乘以矩阵中的单个行

Arrays 数组乘以矩阵中的单个行,arrays,r,matrix,multiplication,Arrays,R,Matrix,Multiplication,我有一个6,6,51数组和一个51,6矩阵。我想将数组中矩阵1的第1行乘以矩阵中的第1行,然后将其作为结果存储。我想对数组中包含的每个矩阵中的每一行再次执行此操作。所以我取数组中第一个矩阵的第二行,然后乘以矩阵的第一行。在循环遍历数组中第一个矩阵的所有6行之后,我想对数组中剩余的50个矩阵执行完全相同的操作 为了帮助解释我的问题,我将给出一个使用6,6,3数组和3,6矩阵的简短示例。 我将编一些数字,以便更容易查看: array1 <- array(1:108, c(6,6,3)) [

我有一个6,6,51数组和一个51,6矩阵。我想将数组中矩阵1的第1行乘以矩阵中的第1行,然后将其作为结果存储。我想对数组中包含的每个矩阵中的每一行再次执行此操作。所以我取数组中第一个矩阵的第二行,然后乘以矩阵的第一行。在循环遍历数组中第一个矩阵的所有6行之后,我想对数组中剩余的50个矩阵执行完全相同的操作

为了帮助解释我的问题,我将给出一个使用6,6,3数组和3,6矩阵的简短示例。 我将编一些数字,以便更容易查看:

array1 <- array(1:108, c(6,6,3))

 [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    7   13   19   25   31
[2,]    2    8   14   20   26   32
[3,]    3    9   15   21   27   33
[4,]    4   10   16   22   28   34
[5,]    5   11   17   23   29   35
[6,]    6   12   18   24   30   36

, , 2

     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]   37   43   49   55   61   67
[2,]   38   44   50   56   62   68
[3,]   39   45   51   57   63   69
[4,]   40   46   52   58   64   70
[5,]   41   47   53   59   65   71
[6,]   42   48   54   60   66   72

, , 3

     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]   73   79   85   91   97  103
[2,]   74   80   86   92   98  104
[3,]   75   81   87   93   99  105
[4,]   76   82   88   94  100  106
[5,]   77   83   89   95  101  107
[6,]   78   84   90   96  102  108

matrix1 <- matrix(1:18, nrow = 3, ncol = 6)

   [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    4    7   10   13   16
[2,]    2    5    8   11   14   17
[3,]    3    6    9   12   15   18
然后在矩阵1的第1行x矩阵1的第1行中执行矩阵1的第2行

1*1 + 7*4 + 13*7 + 19*10 +25*13 + 31*16 = result
以此类推,直到阵列1中矩阵1的第6行

然后使用matrix1的第2行对array1的矩阵2重复上述操作

1*1 + 7*4 + 13*7 + 19*10 +25*13 + 31*16 = result
这是可以理解的吗

如果有的话,有人能帮忙吗

或者,有没有办法将矩阵1拆分为向量?这样我就可以得到51个单独的向量来和每个数组相乘


考虑到

好的,因为我仍然不确定您指的是6 x 3矩阵还是6 x 6矩阵,这里提供了两种情况的解决方案(类似于我的评论):

rowSums
按其名称给出每行的总和。因此,数组中第一个平面乘以矩阵并汇总的结果是一个向量

rowSums(array1[1:Rows, 1:Cols, 1] * matrix1)
# 1131 1284 1449

结果似乎是正确的,现在我们可以
将该解决方案应用到数组的每个矩阵上,如答案顶部所示。

好的,因为我仍然不确定您是指6 x 3矩阵还是6 x 6矩阵,这两种情况下都有一个解决方案(类似于我的评论):

rowSums
按其名称给出每行的总和。因此,数组中第一个平面乘以矩阵并汇总的结果是一个向量

rowSums(array1[1:Rows, 1:Cols, 1] * matrix1)
# 1131 1284 1449

结果似乎是正确的,现在我们可以
将该解决方案应用到数组的每个矩阵上,如答案顶部所示。

这看起来像R。如果是,则将其标记为。如果没有,请使用适当的语言标记。您确定矩阵的大小吗?不是应该是6 x 6吗?因为如果我们有一个6×6×51维的数组,那么就会有51个6×6的矩阵。如果你的问题是正确的,你要求将一个6 x 51矩阵乘以6 x 6矩阵。如果矩阵维数如库纳尔·普里建议的那样是6 x 6,那么解决方案可能是:
apply(数组1,3,函数(x)行和(矩阵x1*x))
想象我正在将矩阵(6,51矩阵)分割成51个单独的向量,然后将数组中每个矩阵的每一行乘以第i个向量,然后对数组中的所有矩阵执行此操作。这看起来像R。如果是,则将其标记为。如果没有,请使用适当的语言标记。您确定矩阵的大小吗?不是应该是6 x 6吗?因为如果我们有一个6×6×51维的数组,那么就会有51个6×6的矩阵。如果你的问题是正确的,你要求将一个6 x 51矩阵乘以6 x 6矩阵。如果矩阵维数如库纳尔·普里建议的那样是6 x 6,那么解决方案可能是:
apply(数组1,3,函数(x)行和(矩阵x1*x))
想象我正在将矩阵(6,51矩阵)分割成51个单独的向量,然后将数组中每个矩阵的每一行乘以第i个向量,并对数组中的所有矩阵执行此操作。