Main Content

find

0이 아닌 요소의 값이나 인덱스 찾기

설명

예제

k = find(X)는 배열 X의 0이 아닌 요소에 대한 선형 인덱스를 벡터로 반환합니다.

  • X가 벡터이면 findX와 방향이 동일한 벡터를 반환합니다.

  • X가 다차원 배열인 경우 find는 결과의 선형 인덱스로 구성된 열 벡터를 반환합니다.

예제

k = find(X,n)X의 0이 아닌 요소에 대응하는 처음 n개의 인덱스를 반환합니다.

예제

k = find(X,n,direction)(여기서 direction'last'임)은 X에서 0이 아닌 요소에 해당하는 마지막 n개의 인덱스를 찾습니다. direction에 대한 디폴트 값은 'first'이며, 이 경우 0이 아닌 요소에 해당하는 처음 n개의 인덱스를 찾습니다.

예제

[row,col] = find(___)는 위에 열거된 구문의 입력 인수 중 하나를 사용하여, 배열 X에서 0이 아닌 각 요소의 행 첨자 및 열 첨자를 반환합니다.

예제

[row,col,v] = find(___)X의 0이 아닌 요소를 포함하는 벡터 v도 반환합니다.

예제

모두 축소

3×3 행렬에서 0이 아닌 요소를 찾습니다.

X = [1 0 2; 0 1 1; 0 0 4]
X = 3×3

     1     0     2
     0     1     1
     0     0     4

k = find(X)
k = 5×1

     1
     5
     7
     8
     9

X에 논리 연산자 not을 사용하여 0인 요소를 찾습니다.

k2 = find(~X)
k2 = 4×1

     2
     3
     4
     6

4×4 마방진 행렬에서 10보다 작은 처음 5개 요소를 찾습니다.

X = magic(4)
X = 4×4

    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1

k = find(X<10,5)
k = 5×1

     2
     3
     4
     5
     7

X에서 대응하는 요소를 확인합니다.

X(k)
ans = 5×1

     5
     9
     4
     2
     7

특정 정수 값을 찾으려면 == 연산자를 사용하십시오. 예를 들어, 홀수 정수로 구성된 1×10 벡터에서 13과 동일한 요소를 찾아보십시오.

x = 1:2:20
x = 1×10

     1     3     5     7     9    11    13    15    17    19

k = find(x==13)
k = 7

정수가 아닌 값을 찾으려면 가지고 있는 데이터 기준의 허용오차 값을 사용하십시오. 그렇지 않으면, 부동소수점 반올림 오차로 인해 때때로 결과가 빈 행렬이 될 수 있습니다.

y = 0:0.1:1
y = 1×11

         0    0.1000    0.2000    0.3000    0.4000    0.5000    0.6000    0.7000    0.8000    0.9000    1.0000

k = find(y==0.3)
k =

  1x0 empty double row vector
k = find(abs(y-0.3) < 0.001)
k = 4

모든 홀수 인덱스 요소가 0인 6×6 마방진 행렬을 생성합니다.

X = magic(6);
X(1:2:end) = 0
X = 6×6

     0     0     0     0     0     0
     3    32     7    21    23    25
     0     0     0     0     0     0
     8    28    33    17    10    15
     0     0     0     0     0     0
     4    36    29    13    18    11

0이 아닌 마지막 4개 요소를 찾습니다.

k = find(X,4,'last')
k = 4×1

    30
    32
    34
    36

4×4 행렬에서 0보다 크고 10보다 작은 처음 3개 요소를 찾습니다. 요소에 대한 행 및 열 첨자를 반환할 2개 출력값을 지정합니다.

X = [18 3 1 11; 8 10 11 3; 9 14 6 1; 4 3 15 21]
X = 4×4

    18     3     1    11
     8    10    11     3
     9    14     6     1
     4     3    15    21

[row,col] = find(X>0 & X<10,3)
row = 3×1

     2
     3
     4

col = 3×1

     1
     1
     1

첫 번째 요소는 X(2,1)8입니다.

3×3 행렬에서 0이 아닌 요소를 찾습니다. 행 첨자, 열 첨자, 요소 값을 반환할 3개 출력값을 지정합니다.

X = [3 2 0; -5 0 7; 0 0 1]
X = 3×3

     3     2     0
    -5     0     7
     0     0     1

[row,col,v] = find(X)
row = 5×1

     1
     2
     1
     2
     3

col = 5×1

     1
     1
     2
     3
     3

v = 5×1

     3
    -5
     2
     7
     1

4×2×3 배열에서 0이 아닌 요소를 찾습니다. 두 출력값 rowcol을 지정하여 0이 아닌 요소의 행 첨자와 열 첨자를 반환합니다. 입력값이 다차원 배열(N > 2)이면 findcolXN-1 후행 차원에 대한 선형 인덱스로 반환합니다.

X = zeros(4,2,3);
X([1 12 19 21]) = 1
X = 
X(:,:,1) =

     1     0
     0     0
     0     0
     0     0


X(:,:,2) =

     0     0
     0     0
     0     0
     1     0


X(:,:,3) =

     0     1
     0     0
     1     0
     0     0

[row,col] = find(X)
row = 4×1

     1
     4
     3
     1

col = 4×1

     1
     3
     5
     6

입력 인수

모두 축소

입력 배열로, 스칼라, 벡터, 행렬, 다차원 배열 중 하나로 지정됩니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char
복소수 지원 여부:

찾고자 하는, 0이 아닌 요소의 개수로, 양의 정수 스칼라로 지정됩니다. 기본적으로 find(X,n)X에서 0이 아닌 첫 번째 n개의 요소를 찾습니다.

검색 방향으로, 문자열 'first''last'로 지정됩니다. find(X,n,'last')를 사용하여 X에서 0이 아닌 마지막 n개의 요소를 찾습니다.

출력 인수

모두 축소

0이 아닌 요소에 대한 인덱스로, 벡터로 반환됩니다.

  • X가 행 벡터이면 k도 행 벡터입니다. 그렇지 않으면 k는 열 벡터가 됩니다.

  • kX가 빈 배열이거나 0이 아닌 요소를 포함하지 않으면 빈 행 벡터이거나 빈 열 벡터입니다.

  • findX가 빈 행렬 []인 경우 k에 빈 행렬 []을 반환합니다.

X(k)를 사용하여 X의 0이 아닌 값을 반환할 수 있습니다.

행 첨자로, 벡터로 반환됩니다. rowcolX의 0이 아닌 요소에 대응하는 X(row,col) 첨자를 지정합니다.

열 첨자로, 벡터로 반환됩니다. rowcolX의 0이 아닌 요소에 대응하는 X(row,col) 첨자를 지정합니다.

X가 다차원 배열이고 N > 2인 경우 colXN-1 후행 차원에 대한 선형 인덱스입니다. 이는 관계 X(row(i),col(i)) == v(i)을 보전합니다.

X의 0이 아닌 요소로, 벡터로 반환됩니다.

세부 정보

모두 축소

선형 인덱스

선형 인덱스는 단일 첨자 사용을 통해 배열의 요소를 참조할 수 있도록 합니다(예: A(k)). MATLAB®은 해당 배열을 각 열이 이전 열의 맨 아래에 추가된 단일 열 벡터로 처리합니다. 따라서 선형 인덱싱은 위쪽에서 아래쪽, 왼쪽에서 오른쪽으로 열의 요소에 번호를 지정합니다.

예를 들어, 3×3 행렬을 보도록 하겠습니다. 요소 A(2,2)A(5)로, 요소 A(2,3)A(8)로 참조할 수 있습니다. 선형 인덱스는 배열의 크기에 따라 변경됩니다. 3×3 행렬에 대한 A(5)는 4×4 행렬에 대한 그것과는 다르게 위치한 요소를 반환합니다.

sub2indind2sub 함수는 첨자와 선형 인덱스 간의 변환시 유용합니다.

  • 조건을 충족하는 배열 요소를 찾으려면 관계식과 함께 find를 사용하십시오. 예를 들어, find(X<5)X에서 5보다 작은 요소에 대한 선형 인덱스를 반환합니다.

  • X에서 조건 X<5를 충족하는 요소를 직접 찾으려면 X(X<5)를 사용하십시오. 논리형 행렬에 불필요하게 find를 사용하는 함수 호출(예: X(find(X<5)))을 피하십시오.

  • 관계 연산(예: X>1)을 사용하여 find를 실행할 경우 관계 연산의 결과는 1과 0으로 이루어진 논리형 행렬이 된다는 것을 기억해야 합니다. 예를 들어, 명령 [row,col,v] = find(X>1)v에 대해 논리값 1(true)의 열 벡터를 반환합니다.

  • 행 및 열 첨자인 rowcolk의 선형 인덱스에 대해 다음과 같은 관계식을 가집니다. k = sub2ind(size(X),row,col)

확장 기능

버전 내역

R2006a 이전에 개발됨