R中的对称循环矩阵

时间:2016-10-13 20:31:25

标签: r matrix linear-algebra

我想创建对称循环矩阵。

订单4的示例:

1 2 : 3 4
2 1 : 4 3
.........
3 4 : 1 2
4 3 : 2 1

订单8的示例:

1 2 3 4 : 5 6 7 8
2 1 4 3 : 6 5 8 7
3 4 1 2 : 7 8 5 6
4 3 2 1 : 8 7 6 5
..................
5 6 7 8 : 1 2 3 4
6 5 8 7 : 2 1 4 3
7 8 5 6 : 3 4 1 2
8 7 6 5 : 4 3 2 1

我如何在R中执行此操作?

1 个答案:

答案 0 :(得分:2)

这似乎解决了这个问题,但却太聪明了。 flip(x)==1惯用法给出[0 1; 1 0]形式的矩阵(一旦转换为数字)......

flip <- function(x) x[rev(seq(nrow(x))),]
x <- matrix(c(1,2,2,1),2)
x2 <- kronecker(2*(flip(x)==1),x,"+")   ## 4x4 solution
x3 <- kronecker(4*(flip(x)==1),x2,"+")  ## 8x8 solution

对大小为2^n的较大矩阵重复(如果你想要这么做的话,嵌入for循环)...我不知道你想要的矩阵是什么答案这不是2^n的大小(例如12x12),但你可以找到扩展这种机制的方法。