다음: 낱칸 배열 색인, 이전: 낱칸 배열의 기본 용법, 상위 문서: 낱칸 배열   [차례][찾아보기]


6.3.2 낱칸 배열 만들기

앞에 있는 예시(낱칸 배열의 기본 용법 참조)는 유효한 변수를 담은채 낱칸 배열을 만드는 방법을 보여줍니다. 그러나, 많은 경우에 낱칸 배열을 먼저 만들고 나중에 값을 채우는 것이 유용합니다.

cell 함수는 지정한 크기이면서 빈 행렬을 담은 낱칸 배열을 반환합니다. 이 함수는 새 수치 배열을 만드는다는 점에서 zeros 함수와  비슷합니다. 아래 예시는 빈 행렬을 담은 2×2짜리 낱칸 배열을 만듭니다.

c = cell (2,2)
     ⇒ c =

         {
           [1,1] = [](0x0)
           [2,1] = [](0x0)
           [1,2] = [](0x0)
           [2,2] = [](0x0)
         }

수치 배열처럼, 낱칸 배열도 다차원이 가능합니다. cell 함수는 반환할 낱칸 배열의 크기를 지정하는 수로 모든 양의 정수를 받습니다. 벡터인 양의 정수로 낱칸 배열 크기를 지정하여도 됩니다. 아래 예시는 같은 크기인 두 낱칸 배열을 만들고, 첫 번째 낱칸 배열의 크기를 보여줍니다.

c1 = cell (3, 4, 5);
c2 = cell ( [3, 4, 5] );
size (c1)
     ⇒ ans =
         3   4   5

보다시피 size 함수도 낱칸 배열에서 작동합니다. 객체의 크기를 기술하는  length, numel, rows, columns 같은 함수도 작동합니다.

cell (n)
cell (m, n)
cell (m, n, k, …)
cell ([m n …])

새 낱칸 배열 객체를 만듭니다.

스칼라 정수 매개변수 한 개만 지정하면,  NxN짜리 정사각형 낱칸 배열을 반환합니다. 스칼라 정수 매개변수 두 개 이상 또는 정수 값 벡터를 지정하면 주어진 크기의 낱칸 배열을 반환합니다.

같이 보기: cellstr, mat2cell, num2cell, struct2cell.

빈 낱칸 배열을 만들고 채우는 다른 방법으로 num2cell, mat2cell, cellslices 함수로 수치 배열을 낱칸 배열을 바꾸는 것이 있습니다.

C = num2cell (A)
C = num2cell (A, 차원)

수치 행렬 A를 낱칸 배열로 바꿉니다.

차원을 지정하지 않으면, A의 각 원소는 출력된 낱칸 배열 C에서 1x1짜리 원소가 됩니다.

차원을 지정하면, C의 개별 원소에 지정한 차원에 맞추어 A의  모든 원소를 넣습니다. 차원에 같은 방식대로 작동하는 벡터를 지정하여도 됩니다.

예시:

x = [1,2;3,4]
⇒
    1    2
    3    4

## each element of A becomes a 1x1 element of C
num2cell (x)
   ⇒
      {
        [1,1] =  1
        [2,1] =  3
        [1,2] =  2
        [2,2] =  4
      }
## all rows (dim 1) of A appear in each element of C
num2cell (x, 1)
   ⇒
      {
        [1,1] =
           1
           3
        [1,2] =
           2
           4
      }
## all columns (dim 2) of A appear in each element of C
num2cell (x, 2)
   ⇒
      {
        [1,1] =
           1   2
        [2,1] =
           3   4
      }
## all rows and cols appear in each element of C
## (hence, only 1 output)
num2cell (x, [1, 2])
   ⇒
      {
        [1,1] =
           1   2
           3   4
      }

같이 보기: mat2cell.

C = mat2cell (A, 차원1, 차원2, …, 차원i, …, 차원n)
C = mat2cell (A, 행_차원)

행렬 A를 낱칸 배열로 바꿉니다.

각 차원 매개변수(차원1, 차원2 등)은 새 출력 C의 원소에 차원의 원소를 나누어 넣는 방법을 정하는 정수 벡터입니다.  i번째 차원의 언소 개수는 size (A, i)입니다. A 내 모든 원소는 sum (dimi) == size (A, i)에 따라 나누어져야 하기 때문입니다. 출력 낱칸 C의 크기는 (dim1) x numel (dim2) x … x numel (dimn)입니다.

차원 매개변수를 행_차원 한 개만 주면, 지정한 대로 행을 쪼개 출력합니다. 열(차원2), 면(차원3) 등의 그외 차원은 쪼개지 않아 출력한 원소에 나타납니다.

예시:

x = reshape (1:12, [3, 4])'
⇒
    1    2    3
    4    5    6
    7    8    9
   10   11   12

## The 4 rows (dim1) are divided in to two cell elements
## with 2 rows each.
## The 3 cols (dim2) are divided in to three cell elements
## with 1 col each.
mat2cell (x, [2,2], [1,1,1])
⇒
{
  [1,1] =

     1
     4

  [2,1] =

      7
     10

  [1,2] =

     2
     5

  [2,2] =
      8
     11

  [1,3] =

     3
     6

  [2,3] =
      9
     12
}

## The 4 rows (dim1) are divided in to two cell elements
## with a 3/1 split.
## All columns appear in each output element.
mat2cell (x, [3,1])
⇒
{
  [1,1] =

     1   2   3
     4   5   6
     7   8   9

  [2,1] =

     10   11   12
}

같이 보기: num2cell, cell2mat.

sl = cellslices (가로, , , 차원)

배열 가로를 지정하면, 하계와 상계를 정하는 색인 벡터 , 로 배열을 잘라 낱칸 배열로 만듭니다.

즉, 아래 부호와 같은 역할을 합니다.

n = length (lb);
sl = cell (1, n);
for i = 1:length (lb)
  sl{i} = x(:,…,lb(i):ub(i),…,:);
endfor

색인 위치는 차원으로 정합니다. 지정하지 않으면, 첫 비단일 차원을 따라 자릅니다.

같이 보기: cell2mat, cellindexmat, cellfun.


다음: 낱칸 배열 색인, 이전: 낱칸 배열의 기본 용법, 상위 문서: 낱칸 배열   [차례][찾아보기]