Matlab의 배열에서 값 인덱스 찾기

Ammar Ali 2021년11월29일
Matlab의 배열에서 값 인덱스 찾기

이 튜토리얼에서는 MATLAB의 find() 함수를 사용하여 배열에서 값의 인덱스를 찾는 방법에 대해 설명합니다.

MATLAB에서 find() 함수를 사용하여 배열에서 값 인덱스 찾기

배열에서 요소는 1부터 시작하는 특정 인덱스에 배치됩니다. 주어진 배열에서 값의 인덱스를 찾으려면 find() 함수를 사용할 수 있습니다. find() 함수는 배열이나 행렬에서 요소의 인덱스와 값을 찾는 데 사용됩니다. 요소의 인덱스를 찾으려면 find() 함수 내부에 조건을 정의해야 합니다. 예를 들어 단일 요소의 인덱스를 찾으려면 find() 함수 내에서 등호 연산자를 사용할 수 있습니다. 동일한 요소가 다른 인덱스에 있는 경우 find() 함수는 요소가 있는 모든 인덱스를 반환합니다. 이 함수 내에서 모든 종류의 조건문을 사용할 수 있습니다. 예를 들어, 특정 숫자보다 큰 모든 요소의 인덱스를 찾고 싶다고 가정합니다. 이 경우 보다 큼 연산자를 사용할 수 있으며 특정 숫자보다 큰 모든 요소의 인덱스를 반환합니다. 예를 들어, 주어진 배열 안에 존재하는 단일 요소의 인덱스를 찾아봅시다. 아래 코드를 참조하십시오.

mat = [2 3 1 2];
indices = find(mat==2)

출력:

indices =

     1     4

변수 인덱스는 위의 출력에서 ​​두 개의 값을 포함합니다. 이는 요소가 배열 또는 벡터 내부의 인덱스 1과 4에 있음을 의미합니다. 이제 1보다 큰 요소의 인덱스를 찾고자 합니다. find() 함수 내에서 조건을 변경해야 합니다. 등호 연산자를 사용하는 대신 보다 큼 연산자를 사용합니다. 아래 코드를 참조하십시오.

mat = [2 3 1 2];
indices = find(mat>1)

출력:

indices =

     1     2     4

위의 출력에서 ​​변수 인덱스에는 3개의 값이 포함되어 있으며, 보시다시피 주어진 배열이나 벡터 내에서 3개의 요소가 1보다 큽니다. 행렬이 있고 벡터 내부의 요소 위치를 찾으려면 find() 함수를 사용할 수 있습니다. 우리는 행렬 내부의 요소가 특정 행과 열에 위치한다는 것을 알고 있으며 특정 행과 열을 찾기 위해 find() 함수를 사용할 수 있습니다. 요소가 여러 위치에 있는 경우 find() 함수는 행과 열에 대해 여러 값을 반환합니다. 아래 코드를 참조하십시오.

mat = [2 3 ; 2 1]
[row, col] = find(mat==2)

출력:

mat =

     2     3
     2     1


row =

     1
     2


col =

     1
     1

위의 출력에서 ​​행렬에는 두 개의 행과 두 개의 열이 있으며 행과 열 벡터의 첫 번째 값은 첫 번째 행과 첫 번째 열인 요소의 첫 번째 위치이고 행과 열의 두 번째 값은 두 번째 행과 첫 번째 열인 요소의 두 번째 위치입니다. 주어진 행렬에서 요소 2의 인덱스를 찾으려면 find() 함수는 값이 행렬의 경우 열 방향으로 배치되기 때문에 1과 2를 반환합니다. 즉, 값 2는 인덱스 1과 2에 있고 값 3은 인덱스 3에 있으며 값 1은 인덱스 4에 있습니다. 따라서 두 개의 출력 변수 대신 하나의 변수만 전달하면 find() 함수는 다음을 반환합니다. 인덱스를 열 방향으로. 예를 들어 요소의 인덱스를 찾아 다른 값으로 교체해 보겠습니다. 아래 코드를 참조하십시오.

mat = [2 3 ; 2 1]
indices = find(mat==2)
mat(indices) = 5

출력:

mat =

     2     3
     2     1


indices =

     1
     2


mat =

     5     3
     5     1

위의 코드에서는 먼저 요소 2의 인덱스를 찾은 다음 인덱스를 사용하여 값을 5로 바꾸는데, 보시다시피 행렬 값이 변경되었습니다. 어떤 이유로 find() 함수를 사용하지 않으려면 for 루프와 if 문을 사용하여 항상 함수를 만들 수 있습니다. 배열이나 행렬의 모든 요소를 ​​탐색해야 하며 if 문을 사용하여 현재 값이 원하는 값과 일치하는지 확인할 수 있습니다. 원하는 값과 일치하면 인덱스를 저장하고 배열 내부에 있는 모든 요소를 ​​확인할 때까지 계속 이동할 수 있습니다. 예를 들어, for 루프와 if 문을 사용하여 벡터 또는 배열의 인덱스를 찾습니다. 아래 코드를 참조하십시오.

mat = [2 3 2 1]
indices = [];
for i=1:length(mat)
    if(mat(i) == 2)
        indices = [indices i];
    end
end
indices

출력:

mat =

     2     3     2     1


indices =

     1     3

위의 코드에서는 변수 인덱스를 빈 벡터로 초기화했습니다. 값 2가 배열 내부의 요소와 일치하면 해당 인덱스를 indices 변수에 저장합니다.

작가: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

관련 문장 - MATLAB Array