배열 형태 변경 및 재배열하기

MATLAB®의 함수 대부분은 기존 배열의 요소를 가져와 다른 형태 또는 수열로 배치할 수 있습니다. 이는 후속 계산을 위해 데이터를 전처리하거나 데이터를 분석하는 데 유용할 수 있습니다.

형태 변경하기

reshape 함수는 배열의 크기와 형태를 변경합니다. 예를 들어, 3x4 행렬의 형태를 2x6 행렬로 변경해 보겠습니다.

A = [1 4 7 10; 2 5 8 11; 3 6 9 12]
A = 3×4

     1     4     7    10
     2     5     8    11
     3     6     9    12

B = reshape(A,2,6)
B = 2×6

     1     3     5     7     9    11
     2     4     6     8    10    12

각 형태의 요소 개수가 같으면 차원 수에 상관없이 어떠한 배열로도 형태를 변경할 수 있습니다. A의 요소를 사용하여 2x2x3 다차원 배열을 생성합니다.

C = reshape(A,2,2,3)
C = 
C(:,:,1) =

     1     3
     2     4


C(:,:,2) =

     5     7
     6     8


C(:,:,3) =

     9    11
    10    12

전치 및 뒤집기

선형 대수의 일반적인 작업은 행을 열로, 열을 행으로 변환하는 행렬의 전치를 사용하는 것입니다. 이 작업을 수행하려면 transpose 함수 또는 .' 연산자를 사용하십시오.

3x3 행렬을 만들고 이 행렬의 전치를 계산합니다.

A = magic(3)
A = 3×3

     8     1     6
     3     5     7
     4     9     2

B = A.'
B = 3×3

     8     3     4
     1     5     9
     6     7     2

유사한 연산자 '는 복소수 행렬의 켤레 전치를 계산합니다. 이 연산은 각 요소의 켤레 복소수를 계산한 후 전치합니다. 2x2 복소수 행렬을 만들고 이 행렬의 켤레 전치를 계산합니다.

A = [1+i 1-i; -i i]
A = 2×2 complex

   1.0000 + 1.0000i   1.0000 - 1.0000i
   0.0000 - 1.0000i   0.0000 + 1.0000i

B = A'
B = 2×2 complex

   1.0000 - 1.0000i   0.0000 + 1.0000i
   1.0000 + 1.0000i   0.0000 - 1.0000i

flipud 함수는 행렬의 행을 위에서 아래 방향으로 뒤집고, fliplr 함수는 행렬의 열을 왼쪽에서 오른쪽 방향으로 뒤집습니다.

A = [1 2; 3 4]
A = 2×2

     1     2
     3     4

B = flipud(A)
B = 2×2

     3     4
     1     2

C = fliplr(A)
C = 2×2

     2     1
     4     3

이동 및 회전하기

circshift 함수를 사용하여 배열의 요소를 특정 개수의 위치만큼 이동할 수 있습니다. 예를 들어, 3x4 행렬을 만들고 행렬의 열을 오른쪽으로 2만큼 이동해 보겠습니다. 두 번째 인수 [0 2]circshift에 행을 0개 자리만큼, 열을 오른쪽으로 2개 자리만큼 이동하도록 지시합니다.

A = [1 2 3 4; 5 6 7 8; 9 10 11 12]
A = 3×4

     1     2     3     4
     5     6     7     8
     9    10    11    12

B = circshift(A,[0 2])
B = 3×4

     3     4     1     2
     7     8     5     6
    11    12     9    10

A의 행을 위로 1만큼 이동하고 열은 제자리에 두려면 두 번째 인수를 [-1 0]으로 지정하십시오.

C = circshift(A,[-1 0])
C = 3×4

     5     6     7     8
     9    10    11    12
     1     2     3     4

rot90 함수는 행렬을 시계 반대 방향으로 90도 회전시킬 수 있습니다.

A = [1 2; 3 4]
A = 2×2

     1     2
     3     4

B = rot90(A)
B = 2×2

     2     4
     1     3

두 번째 인수로 회전 횟수를 지정하여 행렬을 세 번 더 회전시키면 결국 원래 행렬 A가 됩니다.

C = rot90(B,3)
C = 2×2

     1     2
     3     4

정렬하기

배열의 데이터를 정렬하는 것 역시 유용한 방법이기 때문에 MATLAB에서는 여러 가지 정렬 방법을 제공합니다. 예를 들어, sort 함수는 행렬의 각 행 또는 열에 있는 요소를 독립적으로 오름차순 또는 내림차순으로 정렬합니다. 행렬 A를 만들고 A의 각 열을 오름차순으로 정렬합니다.

A = magic(4)
A = 4×4

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

B = sort(A)
B = 4×4

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

각 행을 내림차순으로 정렬합니다. 두 번째 인수 값 2는 행을 기준으로 정렬하도록 지정합니다.

C = sort(A,2,'descend')
C = 4×4

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

전체 행 또는 전체 열 단위로 정렬하려면 sortrows 함수를 사용하십시오. 예를 들어, A의 첫 번째 열의 요소를 기준으로 행을 오름차순으로 정렬해 보겠습니다. 행의 위치는 변경되지만 각 행에 있는 요소의 순서는 유지됩니다.

D = sortrows(A) 
D = 4×4

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

관련 항목