2014-04-13 3 views
3

나는 큐브 m을 n (n은 k), 즉 k 행렬을 m으로 갖는다는 것을 의미합니다. 나는 하나의 큰 행렬, 예를 들어 p 행과 q 행렬로 그것을 재구성하고 싶다 (각 m 행렬을 원소로 생각한다).
어떻게 할 수 있습니까? 재 형성 기능을 사용할 수 있습니까? 예를 들어, 위의 예에서 k = 16, m = n = 2 인 경우에 이들 행렬을 합쳐서 큐브를 형성 할 때 :
은이 같은이를 바꿀 원한다matlab에서 하나의 행렬로 입방체를 변형하는 방법

1 1 5 5 9 9 13 13 
1 1 5 5 9 9 13 13 
2 2 6 6 10 10 14 14 
2 2 6 6 10 10 14 14 
3 3 7 7 11 11 15 15 
3 3 7 7 11 11 15 15 
4 4 8 8 12 12 16 16 
4 4 8 8 12 12 16 16 
+0

"k 행렬 m by n"의 의미를 설명해주십시오. 행렬의 세포? – Daniel

+0

아니요, 그들은 셀 배열이 아닙니다. 위에서 설명한 것처럼, 더 작은 행렬입니다. – user3482383

+0

m * k * n 행렬입니까? – Daniel

답변

2

하여 입력이이 K의 * k에 행렬 N에 의해, 사용 목적의 입력을 얻을 수있다 가정하면

n=2 
k=4 
reshape(permute(reshape(M,n,n,k,k),[1,3,2,4]),n*k,n*k); 

내부 모양 변경은 개로 분할 n에 의해 n에 의해 k에 의해 k, 이는 블록을 직접 나타냅니다.

순열은 모양 (..., n * k, n * k)이 원하는 결과를 생성하도록 치수를 스와핑합니다.

+0

만약 그들이 50x16x 크기라면 어때요?! 어떤 항목을 변경해야합니까? – user3482383

+0

은 차원에 대한 변수를 사용하여 업데이트되었습니다. 50 by 50 by 16은'n = 50, k = 4;' – Daniel

관련 문제