【发布时间】:2016-06-19 03:32:28
【问题描述】:
考虑到偏移量o,我想将大小为k x l 的矩阵拆分为大小为n x n 的块(就像Mathematica 的Partition 函数一样)。
例如,给定一个矩阵A
A <- matrix(seq(1:16), nrow = 4, ncol = 4)
[,1] [,2] [,3] [,4]
[1,] 1 5 9 13
[2,] 2 6 10 14
[3,] 3 7 11 15
[4,] 4 8 12 16
和块大小 = 3,偏移量 = 1,我想输出四个子矩阵,我将从
A[1:3, 1:3]
A[1:3, 2:4]
A[2:4, 1:3]
A[2:4, 2:4]
如果偏移量等于 2 或 3,则此示例的输出应该只是我从中得到的子矩阵
A[1:3, 1:3]
如何矢量化?
【问题讨论】:
-
您可以对负数进行索引,尽管这可能因具体情况而异:
apply(combn(c(-1, -1, -4, -4), 2), 2, function(x){list(A[x[1], x[2]])}) -
如果
offset == 2我们应该有什么? -
@Psidom,2 行 2 列的偏移量。在上面示例的 4 x 4 矩阵中,偏移量 2 和 3 都给出了子矩阵
A[1:3, 1:3] -
这可能是相似的 - stackoverflow.com/questions/24299171/… - 特别是如果简化到数组部分被删除
标签: r matrix vectorization