2016-10-13 106 views
-2

我想创建对称循环矩阵。 4阶R中的对称循环矩阵

实施例:

 
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 2 : 3 4 
2 1 : 4 3 
......... 
3 4 : 1 2 
4 3 : 2 1 

的顺序8实施例?

+0

你在这里使用什么定义?输入是否是数字4? – MrFlick

+0

是的,所有的输入都是数字。这只是一个例子。 – hira

+0

这是一个开始http://stackoverflow.com/questions/15795318/efficient-way-to-create-a-circulant-matrix-in-r –

回答

2

这似乎是为了解决问题,但方式太聪明了。 (如果你想这样做了很多的for环嵌入)的flip(x)==1成语给出了一个矩阵的形式[0 1; 1 0]的(一旦转换为数字)...

尺寸为 2^n的更大的矩阵
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(例如12x12)的矩阵,但是你可以找到一种扩展这种机制的方法。