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 >> Основные функции > Матричные операции > max

max

максимум

Синтаксис

m = max(A)
Col = max(A, 'c')
Row = max(A, 'r'|'m')
M = max(A1, A2,..., An)
M = max(list(A1, A2,..., An))
[.., K] = max(..)

Аргументы

A, A1, ..., An

скаляры, векторы, матрицы или гиперматрицы кодированных целых чисел или вещественных чисел в полном или разрежённом формате. Они должны иметь одинаковые размеры или быть смешанными со скалярами (скаляры, следовательно, неявно расширяются до размеров массивов). Разрежённые массивы не могут смешиваться с полными массивами, за исключением скаляров.

m

одиночное число = максимум из всех значений элементов A. Всегда в полном формате, даже если A является разряжённой.

Col

вектор-столбец, если A является двумерной матрицей или гиперматрицей размерами size(A) с размером size(A,2) равным 1: максимумы по столбцам (для каждой строки). Если A - разрежённая матрица, то Col тоже разрежённый.

Row

вектор-строка, если A является двумерной матрицей или гиперматрицей размерами size(A) с размером size(A,2) равным 1: максимумы по строкам (для каждого стролбца). Если A - разрежённая матрица, то Row тоже разрежённый.

M

Массив размером = size(A1), такой, что для каждого q M(q) = max(A1(q),A2(q),..An(q)). Если A,..,An - разрежённые матрицы, то M тоже разрежённый.

K

Указывает в A (первый) найденный максимум. Когда используется [m,K]=max(A), то

  • Если A вектор, то K - скаляр.
  • В противном случае K является вектор-строкой [i,j,..] индексов.

Для других синтаксисов K имеет форму и размеры, соответствующие Col, Row и M.

Для синтаксиса [M,K] = max(A1,A2,..,An) имеем для каждого линейного индекса q: [M(q),K(q)] = max([A1(q) A2(q) .. An(q)]).

K всегда в полном формате, даже когда A, A1,..,An в разрежённом виде. Следовательно, когда используется синтаксис [M,K]=max(A1,A2,..) с огромными, но разрежёнными матрицами, то это приводит к огромной полной матрице K. Пользователь должен проверить достаточно ли памяти имеется для этого.

Описание

Для A вещественного вектора или матрицы max(A) даёт наибольший элемент в A.

[m,K]=max(A) даёт дополнительно индексы первого максимума.

Может быть использован второй строковый аргумент 'r' или 'c': 'r' используется для получения вектор-строки Row такой что Row(j) содержит максимум j-го столбца A(:,j), K(j) даёт индекс строки, которая содержит максимум столбца №j.

'c' используется для парной операции по строкам A. 'm' используется для совместимости с Matlab.

[M,K]=max(list(A1,...,An)) является эквивалентным для [M,K]=max(A1,A2,...,An).

  • max() игнорирует значения NaN (если есть не только значения NaN).
  • max([]) возвращает [] для значений и индексов.
If max(A1, A2,..., An) is used with a huge input sparse matrix of low density, together with a strictly positive scalar input, the sparse result will no longer have any 0 value: It will be a sparse array with density=1, that may lead to a memory failure.

Примеры

[m, k] = max([])
[m, k] = max([1 5 ; 3 %nan])
[m, k] = max([1 5 ; 3 %nan], 2.5)
[m, k] = max([5 -1 1], [1 0 3], [2 1 3])
[m, k] = max(list([5 -1 1], [1 0 3], [2 1 3]))
--> [m, k] = max([])
 m  =
    []
 k  =
    []

--> [m, k] = max([1 5 ; 3 %nan])
 m  =
   5.
 k  =
   1.   2.

--> [m, k] = max([1 5 ; 3 %nan], 2.5)
 m  =
   2.5   5.
   3.    2.5
 k  =
   2.   1.
   1.   2.

--> [m, k] = max([5 -1 1], [1 0 3], [2 1 3])
 m  =
   5.   1.   3.
 k  =
   1.   3.   2.

С опциями "r" или "c":

A = grand(4,6,"uin",0,30); A(3,4) = %nan
[Row, K] = max(A, "r")
[Col, K] = max(A, "c")
--> A = grand(4,6,"uin",0,30); A(3,4) = %nan
 A  =
   18.   3.    22.   0.    13.   28.
   16.   20.   25.   6.    10.   1.
   25.   26.   20.   Nan   2.    21.
   5.    9.    16.   15.   24.   25.

--> [Row, K] = max(A, "r")
 Row  =
   25.   26.   25.   15.   24.   28.
 K  =
   3.   3.   2.   4.   4.   1.

--> [Col, K] = max(A, "c")
 Col  =
   28.
   25.
   26.
   25.
 K  =
   6.
   3.
   2.
   6.

С разрежёнными входными данными:

s = sprand(5,4,0.5); k = s~=0; s(k) = round((s(k)-0.5)*10), full(s)
[Row, K] = max(s, "r")
[Col, K] = max(s, "c")
[M, K] = max(s, -1);   [full(s)  ones(s(:,1))*%nan  full(M)]
issparse(M)
K
--> s = sprand(5,4,0.5); k = s~=0; s(k) = round((s(k)-0.5)*10), full(s)
 s  =
(  5,  4) sparse matrix
(  1,  2)    -2.
(  1,  3)    -4.
(  1,  4)     3.
(  2,  1)    -5.
(  2,  4)     3.
(  3,  2)    -2.
(  3,  3)    -4.
(  4,  2)     4.
(  4,  4)     2.
(  5,  2)    -5.
(  5,  3)     5.
(  5,  4)    -4.
 ans  =
   0.  -2.  -4.   3.
  -5.   0.   0.   3.
   0.  -2.  -4.   0.
   0.   4.   0.   2.
   0.  -5.   5.  -4.

--> [Row, K] = max(s, "r")
 Row  =
(  1,  4) sparse matrix
(  1,  2)     4.
(  1,  3)     5.
(  1,  4)     3.
 K  =
   1.   4.   5.   1.

--> [Col, K] = max(s, "c")
 Col  =
(  5,  1) sparse matrix
(  1,  1)     3.
(  2,  1)     3.
(  4,  1)     4.
(  5,  1)     5.
 K  =
   4.
   4.
   1.
   2.
   3.

--> [M, K] = max(s, -1);   [full(s)  ones(s(:,1))*%nan  full(M)]
 ans  =
   0.  -2.  -4.   3.   Nan   0.  -1.  -1.   3.
  -5.   0.   0.   3.   Nan  -1.   0.   0.   3.
   0.  -2.  -4.   0.   Nan   0.  -1.  -1.   0.
   0.   4.   0.   2.   Nan   0.   4.   0.   2.
   0.  -5.   5.  -4.   Nan   0.  -1.   5.  -1.

--> issparse(M)
 ans  =
   1.

--> K
 K  =
   1.   2.   2.   1.
   2.   1.   1.   1.
   1.   2.   2.   1.
   1.   1.   1.   1.
   1.   2.   1.   2.

Смотрите также

  • min — минимум
  • strange — range
  • mean — mean (row mean, column mean) of vector/matrix entries
  • gsort — сортировка по алгоритму быстрой сортировки
  • find — find indices of boolean vector or matrix true elements
  • full — sparse to full matrix conversion

История

ВерсияОписание
6.0.2 Теперь max() действительно работает с разрежёнными матрицами
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Thu Feb 14 15:04:55 CET 2019