ind2sub
선형 인덱스를 첨자로 변환
설명
[
는 크기가 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차원 배열에 대한 첨자로 변환하기
선형 인덱스 [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차원 배열의 요소에 액세스하기
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
더 적은 출력 인수로 ind2sub
사용하기
일반적으로 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
입력 인수
sz
— 배열의 크기
양의 정수로 구성된 벡터
배열의 크기로, 양의 정수로 구성된 벡터로 지정됩니다. 이 벡터의 요소는 각각 대응하는 차원의 크기를 나타냅니다. 예를 들어, [2 3 4]
는 2×3×4 배열을 정의합니다.
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
ind
— 선형 인덱스
스칼라 | 벡터 | 행렬 | 다차원 배열
선형 인덱스로, 스칼라, 벡터, 행렬 또는 다차원 배열로 지정됩니다.
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
출력 인수
row
— 행 첨자
스칼라 | 벡터 | 행렬 | 다차원 배열
행 첨자로, 스칼라, 벡터, 행렬 또는 다차원 배열로 반환됩니다. row
의 크기는 입력 인수 ind
의 크기와 같습니다.
데이터형: double
col
— 열 첨자
스칼라 | 벡터 | 행렬 | 다차원 배열
열 첨자로, 스칼라, 벡터, 행렬 또는 다차원 배열로 반환됩니다. col
의 크기는 입력 인수 ind
의 크기와 같습니다.
데이터형: double
I1,I2,...,In
— 다차원 첨자
스칼라 | 벡터 | 행렬 | 다차원 배열
다차원 첨자로, 스칼라, 벡터, 행렬 또는 다차원 배열로 반환됩니다. 각 배열 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))
입니다.
확장 기능
tall형 배열
메모리에 담을 수 없을 정도로 많은 행을 가진 배열을 계산할 수 있습니다.
이 함수는 tall형 배열을 완전히 지원합니다. 자세한 내용은 tall형 배열 항목을 참조하십시오.
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
사용법 관련 참고 및 제한 사항:
첫 번째 인수는 유효한 크기 벡터여야 합니다. 요소가
intmax
보다 많은 배열에 대해서는 크기 벡터가 지원되지 않습니다.생성된 코드는
NaN
입력값을 범위를 벗어난 것으로 처리하고 런타임 오류를 발생시킵니다.Variable-Sizing Restrictions for Code Generation of Toolbox Functions (MATLAB Coder) 항목을 참조하십시오.
스레드 기반 환경
MATLAB®의 backgroundPool
을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool
을 사용해 코드 실행 속도를 높일 수 있습니다.
이 함수는 스레드 기반 환경을 완전히 지원합니다. 자세한 내용은 스레드 기반 환경에서 MATLAB 함수 실행하기 항목을 참조하십시오.
GPU 배열
Parallel Computing Toolbox™를 사용해 GPU(그래픽스 처리 장치)에서 실행하여 코드 실행 속도를 높일 수 있습니다.
사용법 관련 참고 및 제한 사항:
64비트 정수 선형 인덱스는 지원되지 않습니다.
자세한 내용은 GPU에서 MATLAB 함수 실행하기 (Parallel Computing Toolbox) 항목을 참조하십시오.
분산 배열
Parallel Computing Toolbox™를 사용하여 대규모 배열을 클러스터의 결합된 메모리에 걸쳐 분할할 수 있습니다.
이 함수는 분산 배열을 완전히 지원합니다. 자세한 내용은 분산 배열을 사용하여 MATLAB 함수 실행 (Parallel Computing Toolbox) 항목을 참조하십시오.
버전 내역
R2006a 이전에 개발됨
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)