find 論理値ベクトルまたは行列のtrue要素の添え字を見つける

## 呼び出し手順

                ii = find(x)
                [i1,i2,..] = find(x)
                .. = find(x, nmax)

## 引数

x

  ブールまたは数値のベクトル、行列、または超行列. ゼロ以外の数値は％Tと見なされます. スパース行列が受け入れられます.

nmax

  返される添え字の最大数を指定する整数. デフォルト値は"全て"を意味する -1 です. このオプションは,全ての添え字の探索を避け,処理効率を改善するために 使用できます.

ii

  row vector of linearized indices of %T or non-zero elements, or empty matrix [].

i1, i2, ..

  row vectors of directional indices, or empty matrix []

## 説明

`x` が論理値の場合,

`ii=find(x)` は`x(i)`が "true"の添字`i`のベクトルを返します. trueとなる要素がみつからない場合,空行列が返されます.

`[i1,i2,..]=find(x)` は, `x(i1(n),i2(n),..)`が "true" の 添字`i1` (行の場合) および `i2` (列の場合),..のベクトルを返します. trueとなる要素がみつからない場合, `i1`,`i2`, ...の空行列を返します.

`x` が標準行列またはハイパー行列の場合, `find(x)`は`find(x<>0)` と解釈されます.

`find([])` は `[]`を返します.

## 例

With input booleans:

    A = [%F %T %T %F ; %T %F %F %T]
    find(A)
    find(A,2)

    --> A = [%F %T %T %F ; %T %F %F %T]
     A  =
      F T T F
      T F F T

    --> find(A)
     ans  =
       2.   3.   5.   8.

    --> find(A,2)
     ans  =
       2.   3.

With input numbers:

    B = [0 -1 0 3 ; 0 -1 -0.4 0]
    find(B)
    [i, j] = find(B);
    [i' j']

    --> B = [0 -1 0 3 ; 0 -1 -0.4 0]
     B  =
       0.  -1.   0.    3.
       0.  -1.  -0.4   0.

    --> find(B)
     ans  =
       3.   4.   6.   7.

    --> [i, j] = find(B);
    --> [i' j']
     ans  =
       1.   2.
       2.   2.
       2.   3.
       1.   4.

With an input hypermatrix of numbers:

    E = grand(2,5,2,"uin",1,6)
    find(E < 4)

    --> E = grand(2,5,2,"uin",1,6)
     E  =
    (:,:,1)
       1.   6.   5.   5.   4.
       6.   5.   3.   4.   4.
    (:,:,2)
       2.   4.   3.   6.   5.
       5.   6.   6.   6.   4.

    --> find(E < 4)
     ans  =
       1.   6.   11.   15.

With an input numerical or boolean sparse matrix:

    C = [0  3  7  0  9  0
         0  4  0  0  5  0
         6  0  1  0  3  8
        ];
    C = sparse(C);
    find(C)
    find(C, 4)

    // With input boolean sparse
    D = C > 4
    full(D)
    find(D)

    --> C = sparse(C);
    --> find(C)
     ans  =
        3.    4.    5.    7.    9.    13.    14.    15.    18.

    -->find(C, 4)
     ans  =
        3.    4.    5.    7.

    --> // With input boolean sparse
    --> D = C > 4
     D  =
    (  3,  6) sparse boolean matrix
    (  1,  3)   T
    (  1,  5)   T
    (  2,  5)   T
    (  3,  1)   T
    (  3,  6)   T

    --> full(D)
     ans  =
      F F T F T F
      F F F F T F
      T F F F F T

    -->find(D)
     ans  =
        3.    7.    13.    14.    18.

With the result of a boolean element-wise condition on texts

    beers = ["Desperados", "Leffe", "Kronenbourg", "Heineken"];
    find(beers == "Leffe")
    find(beers == "1664")

    --> find(beers == "Leffe")
     ans  =
       2.

    --> find(beers == "1664")
     ans  =
        []

Addressing selected elements:

    // a) Through their linearized indices:
    H = [ 0  -2  -8  4  -5  -1
         -2   2  -9  5   0   1
        ];
    L = H;
    L(find(L < 0)) = -10

    // b) Directly through the array of their boolean status:
    L = H;
    L(L < 0) = -10

    --> // a) Through their linearized indices:
    --> H = [ 0  -2  -8  4  -5  -1
      >      -2   2  -9  5   0   1
      >     ];
    --> L = H;
    --> L(find(L < 0)) = -10
     L  =
       0.   -10.  -10.   4.  -10.  -10.
      -10.   2.   -10.   5.   0.    1.

    --> // b) Directly through the array of their boolean status:
    --> L = H;
    --> L(L < 0) = -10
     L  =
       0.   -10.  -10.   4.  -10.  -10.
      -10.   2.   -10.   5.   0.    1.

## 参照

- vectorfind
- grep
- findobj
- boolean