Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Français - Português - 日本語 -
Справка Scilab >> Основные функции > Поиск и сортировка > find

find

даёт индексы элементов с ненулевым значением или значением %T

Синтаксис

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

Аргументы

x

Вектор, матрица или гиперматрица логических значений или чисел. Все ненулевые числа считаются значениями %T. Принимаются разрежённые матрицы.

nmax

целое число, указывающее максимальное количество индексов для возврата. Значение по умолчанию равно -1, которое стоит для "все". Эта опция может использоваться для эффективности, чтобы исключить поиск всех индексов.

ii

вектор-строка линеаризованных индексов с ненулевым значением, или значением %T или пустая матрица []

i1, i2, ..

векторы-строки индексов направления или пустая матрица []

Описание

Если x является матрицей логических значений, то

ii=find(x) возвращает вектор индексов i, для которых x(i) соответствует "истине". Если не найден ни один элемент со значением "истина", то возвращается пустая матрица.

[i1,i2,..]=find(x) возвращает векторы индексов i1 (для строк) и i2 (для столбцов), .. такие, что x(i1(n),i2(n),..) соответствует "истине". Если не найден ни один элемент со значением "истина", то возвращаются пустые матрицы в i1, i2, ...

Если x - это стандартная матрица или гиперматрица, то find(x) интерпретируется как find(x<>0)

find([]) возвращает [].

Примеры

С входными логическими значениями:

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.

С входными числами:

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.

С входными гиперматрицами чисел:

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.

С входной числовой или логической разрежённой матрицей:

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)

// С входной логической разрежённой матрицей
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.

С результатом логического поэлементного условия на текстах:

beers = ["Desperados", "Leffe", "Kronenbourg", "Heineken"];
find(beers == "Leffe")
find(beers == "1664")
--> find(beers == "Leffe")
 ans  =
   2.

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

Адресация выбранных элементов:

// a) Через их линеаризованные индексы:
H = [ 0  -2  -8  4  -5  -1
     -2   2  -9  5   0   1
    ];
L = H;
L(find(L < 0)) = -10

// b) Непосредственно через массив их логического статуса:
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 — ищет расположение вектора (отмеченный символом групповой подстановки) в матрице или гиперматрице
  • findobj — find an object with specified property
  • boolean — Объекты Scilab'а, логические переменные и операторы & | ~
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Tue Jul 20 11:21:23 CEST 2021