gpt4 book ai didi

r - 在 R 中创建 block 循环矩阵

转载 作者:行者123 更新时间:2023-12-02 15:45:26 25 4
gpt4 key购买 nike

我正在尝试在 R 中创建一个 block 循环矩阵。下面给出了 block 循环矩阵的结构。

C0 C1 ... Cn-1
Cn-1 C0 C1 ... Cn-2
Cn-2 Cn-1 .... Cn-3

and so on

我有 block

C0 .... Cn-1

创建矩阵的最简单方法是什么。已有功能可用吗?

最佳答案

感谢您提出具有挑战性的问题!这是一个用下对角线和上对角线对矩阵的克罗内克积求和的解决方案。

示例数据,矩阵列表:

C <- lapply(1:3, matrix, nrow = 2, ncol = 2)

我的解决方案:

bcm <- function(C) {
require(Matrix)
n <- length(C)
Reduce(`+`, lapply((-n+1):(n-1),
function(i) kronecker(as.matrix(bandSparse(n, n, -i)),
C[[1 + (i %% n)]])))
}
bcm(C)

# [,1] [,2] [,3] [,4] [,5] [,6]
# [1,] 1 1 3 3 2 2
# [2,] 1 1 3 3 2 2
# [3,] 2 2 1 1 3 3
# [4,] 2 2 1 1 3 3
# [5,] 3 3 2 2 1 1
# [6,] 3 3 2 2 1 1

关于r - 在 R 中创建 block 循环矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17461212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com