본문 바로가기

MATLAB/ㄴ 기타

1. 배열 인덱싱

MATLAB에는 배열에서의 요소 위치(인덱스)를 기준으로 배열 요소에 액세스 할 수 있는 세 가지 기본 방법이 있습니다.

 


 

1) 요소 위치를 사용하여 인덱싱

가장 일반적인 방법은 요소의 인덱스를 명시적으로 지정하는 것입니다.

예를 들어, 행렬의 단일 요소에 액세스 하려면 요소의 행 번호 다음에 열 번호를 지정하십시오.

 

 

e는 A의 3, 2 위치(세번째 행, 두번째 열)에 있는 요소입니다.

요소 인덱스를 벡터로 지정하여 한 번에 여러 개의 요소를 참조할 수도 있습니다.

예를 들어, A의 두 번째 행에 있는 첫 번째 요소와 세 번째 요소에 액세스해 보겠습니다.

 

특정 범위의 행 또는 열에 있는 요소를 액세스하려면 colon을 사용하십시오.

예를 들어, A의 행 1~3과 열 2~4 범위에 있는 요소에 액세스해 보겠습니다.

 

r을 계산하는 또 다른 방법은 키워드 end를 사용하여 두 번째 열부터 마지막 열까지 지정하는 것입니다.

이 방법을 사용하면 A에 몇 개의 열이 있는지 정확하게 알지 못해도 마지막 열을 지정할 수 있습니다.

 

행 또는 열 전체에 액세스하려면 콜론 연산자만 사용하십시오.

예를 들어, A의 세 번째 열 전체를 반환해 보겠습니다.

 

MATLAB에서는 인덱싱을 사용하여 데이터형 또는 차원에 상관없이 모든 배열의 요소에 액세스할 수 있습니다.

예를 들어, datetime 배열의 열에 직접 액세스해 보겠습니다.

 

 

더 높은 차원의 배열의 경우, 배열 차원과 일치하도록 구문을 확장합니다.

3 * 3 * 3 랜덤 숫자형 배열이 있다고 가정하겠습니다.

배열의 두 번째 행, 세 번째 열, 첫 번째 시트에 있는 요소에 액세스합니다.

 


 

2) 단일 인덱스를 사용하여 인덱싱하기

배열의 요소에 액세스하는 또 다른 방법은 배열의 크기/차원에 상관없이 단일 인덱스만 사용하는 것입니다.

이 방법을 선형 인덱싱이라고 합니다.

MATLAB은 배열을 정의된 크기 및 형태에 따라 표시하지만, 실제로는 메모리에 하나의 열로 구성된 요소로 저장합니다.

이 개념을 시각화하는 좋은 방법은 행렬을 사용하는 것입니다.

다음 배열은 3 * 3 행렬로 표시되지만, MATLAB은 행렬 A의 열을 차례대로 연결하여 하나의 열로 저장합니다.

저장된 벡터에는 일련의 요소 12, 45, 33, 36, 29, 25, 91, 48, 11이 들어있으며,

하나의 콜론을 사용하여 이를 확인할 수 있습니다.

 

 

예를 들어, A의 3,2 요소는 25이며, 구문 A(3,2)를 사용하여 액세스할 수 있습니다.

또한 25는 저장된 벡터 수열의 여섯 번째 요소이므로 구문 A(6)를 사용하여 이 요소에 액세스할 수 있습니다.

 

선형 인덱싱은 시각적으로 직관성이 떨어지지만, 배열의 크기 또는 형태에 영향을 받지 않는 특정 연산을 수행할 때

효과적일 수 있습니다.

예를 들어, sum 함수에 두 번째 인수를 제공하지 않고도 A에 있는 모든 요소의 합을 쉽게 구할 수 있습니다.

 

sub2ind 함수와 ind2sub 함수는 원래 배열 인덱스와 선형 인덱스 간 변환에 유용합니다.

예를 들어, A의 3,2 요소에 해당하는 선형 인덱스를 계산해 보겠습니다.

선형 인덱스를 다시 행과 열 형식으로 변환합니다.

 


 

3) 논리값을 사용하여 인덱싱하기

논리값 표시자 true와 false를 사용하면 특히 조건문을 사용할 때 배열의 요소를 참조하는 데 유용합니다.

예를 들어, 행렬 A의 요소가 또 다른 행렬 B의 대응하는 요소보다 작은지 여부를 알고자 한다고 가정하겠습니다.

'보다 작음' 연산자는  A의 요소가 대응하는 B의 요소보다 작을 경우 1을 요소로 갖는 논리형 배열을 반환합니다.

 

 

 

조건을 충족하는 요소의 위치를 확인했기 때문에 ind를 인덱스 배열로 사용하여 개별 값을 검토할 수 있습니다.

MATLAB은 ind에 있는 값 1의 위치와 A 및 B의 대응하는 요소를 연결지어 해당 값을 열 벡터로 표시합니다.

 

 

또한 MATLAB의 'is' 함수는 입력값에서 특정 조건을 충족하는 요소를 나타내는 논리형 배열을 반환합니다.

예를 들어, ismissing 함수를 사용하여 string 벡터에서 누락된 요소를 확인해 보겠습니다.

 

누락되지 않은 요소의 값을 찾고자 한다고 가정하겠습니다.

이 작업을 수행하려면 인덱스 벡터 ind와 ~ 연산자를 함께 사용하십시오.

 


 

 

공식 문서: https://kr.mathworks.com/help/matlab/math/array-indexing.html

 

배열 인덱싱 - MATLAB & Simulink - MathWorks 한국

이 예제의 수정된 버전이 있습니다. 사용자가 편집한 내용을 반영하여 이 예제를 여시겠습니까?

kr.mathworks.com