Main Content

ind2sub

선형 인덱스를 첨자로 변환

설명

예제

[row,col] = ind2sub(sz,ind)는 크기가 sz인 행렬의 선형 인덱스 ind에 대응하는 행 첨자와 열 첨자를 포함하는 배열 rowcol을 반환합니다. 여기서 sz는 요소를 2개 가진 벡터로, sz(1)은 행 개수를 지정하고 sz(2)는 열 개수를 지정합니다.

예제

[I1,I2,...,In] = ind2sub(sz,ind)는 크기가 sz인 다차원 배열에 대해 선형 인덱스 ind에 대응하는 다차원 첨자를 포함하는 n개의 배열 I1,I2,...,In을 반환합니다. 여기서 sz는 각 배열의 차원 크기를 지정하는 n개의 요소로 이루어진 벡터입니다.

예제

모두 축소

선형 인덱스 [3 4 5 6]을 3×3 행렬의 행 첨자와 열 첨자로 변환합니다. 선형 인덱스에서 첨자로의 매핑(위치 기준 인덱싱)은 다음과 같이 나타낼 수 있습니다.

입력 벡터를 만들고 변환을 수행합니다.

ind = [3 4 5 6];
sz = [3 3];
[row,col] = ind2sub(sz,ind)
row = 1×4

     3     1     2     3

col = 1×4

     1     2     2     2

선형 인덱스 [3 4 5 6]을 2×2×2 배열의 첨자로 변환합니다. 선형 인덱스에서 2×2×2 배열에 대한 첨자로의 매핑(위치 기준 인덱싱)은 다음과 같이 나타낼 수 있습니다.

입력 벡터를 만들고 변환을 수행합니다.

ind = [3 4 5 6];
sz = [2 2 2];
[I1,I2,I3] = ind2sub(sz,ind)
I1 = 1×4

     1     2     1     2

I2 = 1×4

     2     2     1     1

I3 = 1×4

     1     1     2     2

3차원 배열의 선형 인덱스를 첨자 인덱스로 변환합니다.

배열을 만들고 배열의 14번째 요소에 대응하는 첨자 인덱스를 찾습니다.

A = rand(3,4,2);
[row,col,page] = ind2sub(size(A),14)
row = 2
col = 1
page = 2

두 인덱스 형태가 모두 배열의 동일한 요소를 나타내는지 확인합니다.

A(14)
ans = 0.4854
A(row,col,page)
ans = 0.4854

일반적으로 N차원 배열에 대해 ind2sub를 사용할 때에는 행렬의 각 차원에 대해 N개의 출력 인수를 제공합니다. 이 예제에서는 3차원 배열에 대해 더 적은 출력 인수를 반환하면 다른 결과를 보여줍니다.

2×2×2 크기의 3차원 배열에 대해 선형 인덱스 1~8을 변환하는 데 필요한 입력 인수를 만듭니다.

ind = 1:8;
sz = [2 2 2];

ind2sub를 사용하여 2×2×2 배열에 대한 행, 열, 페이지 첨자를 반환할 때 출력 인수를 3개 지정합니다.

[row,col,page] = ind2sub(sz,ind)
row = 1×8

     1     2     1     2     1     2     1     2

col = 1×8

     1     1     2     2     1     1     2     2

page = 1×8

     1     1     1     1     2     2     2     2

출력 인수를 2개만 지정하면 ind2sub는 배열의 3번째 차원을 무시하고 대신에 2×4 크기의 2차원 배열에 대한 첨자를 반환합니다.

[row,col] = ind2sub(sz,ind)
row = 1×8

     1     2     1     2     1     2     1     2

col = 1×8

     1     1     2     2     3     3     4     4

출력 인수를 1개만 지정하면 ind2sub는 배열의 2번째 차원과 3번째 차원을 무시하고 대신에 1×8 크기의 1차원 배열에 대한 첨자를 반환합니다.

row = ind2sub(sz,ind)
row = 1×8

     1     2     3     4     5     6     7     8

입력 인수

모두 축소

배열의 크기로, 양의 정수로 구성된 벡터로 지정됩니다. 이 벡터의 요소는 각각 대응하는 차원의 크기를 나타냅니다. 예를 들어, [2 3 4]는 2×3×4 배열을 정의합니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

선형 인덱스로, 스칼라, 벡터, 행렬 또는 다차원 배열로 지정됩니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

출력 인수

모두 축소

행 첨자로, 스칼라, 벡터, 행렬 또는 다차원 배열로 반환됩니다. row의 크기는 입력 인수 ind의 크기와 같습니다.

데이터형: double

열 첨자로, 스칼라, 벡터, 행렬 또는 다차원 배열로 반환됩니다. col의 크기는 입력 인수 ind의 크기와 같습니다.

데이터형: double

다차원 첨자로, 스칼라, 벡터, 행렬 또는 다차원 배열로 반환됩니다. 각 배열 I1,I2,…,In의 크기는 입력 인수 ind의 크기와 같습니다.

데이터형: double

  • 행렬 A에 대한 특정 조건을 만족하는 행렬 요소의 선형 인덱스를 가져오려면 하나의 출력 인수를 지정해 find 함수를 사용하면 됩니다. 첨자 인덱스를 가져오려면 두 개의 출력 인수를 지정해 find 함수를 사용하십시오. 예를 들어, [row,col] = ind2sub(size(A),find(A>5))[row,col] = find(A>5)와 같은 결과를 반환합니다.

알고리즘

배열 A의 경우, [I1,…,In] = ind2sub(size(A),ind)이면 모든 k에 대해 A(I1(k),…,In(k)) = A(ind(k))입니다.

확장 기능

버전 내역

R2006a 이전에 개발됨

참고 항목

| |