Main Content

다차원 배열

MATLAB®에서 다차원 배열은 3차원 이상의 배열입니다. 행렬에서 2차원은 행과 열로 표현됩니다.

각 요소는 2개의 첨자, 즉 행 인덱스와 열 인덱스로 정의됩니다. 다차원 배열은 2차원 행렬을 확장한 것으로, 인덱싱에 추가 첨자를 사용합니다. 예를 들어, 3차원 배열은 3개의 첨자를 사용합니다. 처음 2개 차원은 행렬과 같이 행과 열을 나타내며, 세 번째 차원은 요소의 페이지 또는 시트를 나타냅니다.

다차원 배열 만들기

먼저 2차원 행렬을 만든 후 확장하여 다차원 배열을 만들 수 있습니다. 예를 들어, 먼저 3×3 행렬을 3차원 배열의 첫 번째 페이지로 정의해 보겠습니다.

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

     1     2     3
     4     5     6
     7     8     9

이제 두 번째 페이지를 추가합니다. 이 작업을 수행하려면 세 번째 차원의 인덱스 값 2에 또 다른 3×3 행렬을 할당하십시오. 구문 A(:,:,2)는 첫 번째 차원과 두 번째 차원에 콜론을 사용하여 대입식의 우변에 있는 행과 열을 모두 포함시킵니다.

A(:,:,2) = [10 11 12; 13 14 15; 16 17 18]
A = 
A(:,:,1) =

     1     2     3
     4     5     6
     7     8     9


A(:,:,2) =

    10    11    12
    13    14    15
    16    17    18

cat 함수는 다차원 배열을 생성하는 데 유용한 툴입니다. 예를 들어, A를 세 번째 페이지와 결합하여 새 3차원 배열 B를 생성해 보겠습니다. 첫 번째 인수는 함께 결합할 차원을 나타냅니다.

B = cat(3,A,[3 2 1; 0 9 8; 5 3 7])
B = 
B(:,:,1) =

     1     2     3
     4     5     6
     7     8     9


B(:,:,2) =

    10    11    12
    13    14    15
    16    17    18


B(:,:,3) =

     3     2     1
     0     9     8
     5     3     7

다차원 배열을 빠르게 확장하는 또 다른 방법은 전체 페이지에 단일 요소를 할당하는 것입니다. 예를 들어, B에 모두 0으로 구성된 네 번째 페이지를 추가해 보겠습니다.

B(:,:,4) = 0
B = 
B(:,:,1) =

     1     2     3
     4     5     6
     7     8     9


B(:,:,2) =

    10    11    12
    13    14    15
    16    17    18


B(:,:,3) =

     3     2     1
     0     9     8
     5     3     7


B(:,:,4) =

     0     0     0
     0     0     0
     0     0     0

요소 액세스

다차원 배열의 요소에 액세스하려면 벡터 및 행렬에서와 마찬가지로 정수 첨자를 사용하십시오. 예를 들어, A에서 A의 첫 번째 행, 두 번째 열, 두 번째 페이지인 1,2,2 요소를 찾아 보겠습니다.

A
A = 
A(:,:,1) =

     1     2     3
     4     5     6
     7     8     9


A(:,:,2) =

    10    11    12
    13    14    15
    16    17    18

elA = A(1,2,2)
elA = 
11

두 번째 차원에서 인덱스 벡터 [1 3]을 사용하여 A의 각 페이지의 첫 번째 열과 마지막 열에만 액세스합니다.

C = A(:,[1 3],:)
C = 
C(:,:,1) =

     1     3
     4     6
     7     9


C(:,:,2) =

    10    12
    13    15
    16    18

각 페이지의 두 번째 행과 세 번째 행을 찾으려면 콜론 연산자를 사용하여 인덱스 벡터를 생성하십시오.

D = A(2:3,:,:)
D = 
D(:,:,1) =

     4     5     6
     7     8     9


D(:,:,2) =

    13    14    15
    16    17    18

배열 조작하기

다차원 배열의 요소는 벡터 및 행렬과 마찬가지로, 여러 가지 방법으로 이동할 수 있습니다. 함수 reshape, permute, squeeze는 요소를 재배열하는 데 유용합니다. 2페이지로 구성된 3차원 배열이 있다고 가정하겠습니다.

다차원 배열의 형태를 변경하면 특정 연산을 수행하거나 데이터를 시각화하는 데 유용할 수 있습니다. reshape 함수를 사용하여 3차원 배열의 요소를 6×5 행렬로 재배열해 보겠습니다.

A = [1 2 3 4 5; 9 0 6 3 7; 8 1 5 0 2];
A(:,:,2) = [9 7 8 5 2; 3 5 8 5 1; 6 9 4 3 3];
B = reshape(A,[6 5])
B = 6×5

     1     3     5     7     5
     9     6     7     5     5
     8     5     2     9     3
     2     4     9     8     2
     0     3     3     8     1
     1     0     6     4     3

reshape는 열을 기준으로 연산을 수행하는데, A의 열을 교차하며 후속 열을 열 밑으로 내려서 새 행렬을 만들며, 첫 번째 페이지부터 시작하여 두 번째 페이지로 이동합니다.

배열의 차원 순서를 재배열하는 데는 치환이 사용됩니다. 3차원 배열 M이 있다고 가정하겠습니다.

M(:,:,1) = [1 2 3; 4 5 6; 7 8 9];
M(:,:,2) = [0 5 4; 2 7 6; 9 3 1]
M = 
M(:,:,1) =

     1     2     3
     4     5     6
     7     8     9


M(:,:,2) =

     0     5     4
     2     7     6
     9     3     1

permute 함수에서 두 번째 인수에 차원 순서를 지정하여 각 페이지의 행 첨자와 열 첨자를 서로 바꿉니다. M의 원래 행은 이제 열이 되고, 원래 열은 행이 됩니다.

P1 = permute(M,[2 1 3])
P1 = 
P1(:,:,1) =

     1     4     7
     2     5     8
     3     6     9


P1(:,:,2) =

     0     2     9
     5     7     3
     4     6     1

마찬가지로, M의 행 첨자와 페이지 첨자를 서로 바꿀 수 있습니다.

P2 = permute(M,[3 2 1])
P2 = 
P2(:,:,1) =

     1     2     3
     0     5     4


P2(:,:,2) =

     4     5     6
     2     7     6


P2(:,:,3) =

     7     8     9
     9     3     1

다차원 배열을 사용할 경우, 길이가 1인 불필요한 차원이 있는 배열을 발견할 수 있습니다. squeeze 함수는 길이가 1인 차원을 제거하는 또 다른 유형의 조작을 수행합니다. 예를 들어, repmat 함수를 사용하여 요소가 모두 5이고 세 번째 차원의 길이가 1인 2×3×1×4 배열을 만들어 보겠습니다.

A = repmat(5,[2 3 1 4])
A = 
A(:,:,1,1) =

     5     5     5
     5     5     5


A(:,:,1,2) =

     5     5     5
     5     5     5


A(:,:,1,3) =

     5     5     5
     5     5     5


A(:,:,1,4) =

     5     5     5
     5     5     5

szA = size(A)
szA = 1×4

     2     3     1     4

numdimsA = ndims(A)
numdimsA = 
4

squeeze 함수로 세 번째 차원을 제거하여 3차원 배열을 만듭니다.

B = squeeze(A)
B = 
B(:,:,1) =

     5     5     5
     5     5     5


B(:,:,2) =

     5     5     5
     5     5     5


B(:,:,3) =

     5     5     5
     5     5     5


B(:,:,4) =

     5     5     5
     5     5     5

szB = size(B)
szB = 1×3

     2     3     4

numdimsB = ndims(B)
numdimsB = 
3

관련 항목