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 — ищет расположение вектора (отмеченный символом групповой подстановки) в матрице или гиперматрице
- grep — поиск соответствий строки в векторе строк
- findobj — find an object with specified property
- boolean — Объекты Scilab'а, логические переменные и операторы & | ~
| Report an issue | ||
| << dsearch | Поиск и сортировка | gsort >> |