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
- mean
- gsort
- find
- full

## История

6.0.2 Теперь max() действительно работает с разрежёнными матрицами