我想创建对称循环矩阵。
订单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中执行此操作?
答案 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),但你可以找到扩展这种机制的方法。