2016-10-13 3 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에서이 작업을 수행 할 : 위해 8

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

예?

+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 관용구 ... 크기 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 

반복 형태 [0 1; 1 0]의 (한 번 숫자로 변환) 매트릭스를 제공합니다 .. . 내가 원하는 대답은 크기가 2^n (예 : 12x12)이 아닌 행렬에 대해 무엇인지 모르지만이 기계를 확장 할 수있는 방법을 찾을 수 있습니다.