Документация Engee

cummax

Кумулятивный максимум.

Библиотека

EngeeDSP

Синтаксис

Вызов функции

  • M = cummax(A) — возвращает кумулятивные максимальные элементы массива A.

    • Если A — вектор, то M — вектор того же размера и типа, содержащий кумулятивные максимумы вектора A.

    • Если A — матрица, то M — матрица того же размера и типа, содержащая кумулятивные максимумы в каждом столбце матрицы A.

    • Если A — многомерный массив, то M — массив того же размера и типа, содержащий кумулятивные максимумы по первому измерению массива A, размер которого не равен 1.

  • M = cummax(A,dim) — возвращает кумулятивные максимумы по измерению dim. Например, если A — матрица, то cummax(A,2) возвращает кумулятивные максимумы по строкам матрицы A.

  • M = cummax(___,direction) — определяет направление для любого из предыдущих вариантов синтаксиса. Например, cummax(A,2,"reverse") возвращает кумулятивные максимумы матрицы A, действуя от конца к началу второго измерения матрицы A.

  • M = cummax(___,nanflag) — определяет, следует ли исключать или включать значения NaN в массив A. Например, cummax(A,"includenan") учитывает значения NaN при вычислении каждого максимума. По умолчанию cummax исключает значения NaN.

Аргументы

Входные аргументы

# A — входной массив
вектор | матрица | многомерный массив

Details

Входной массив, заданный как вектор, матрица или многомерный массив. Для комплексных элементов функция cummax сравнивает их амплитуды. Если амплитуды равны, cummax также сравнивает фазовые углы.

Типы данных

Float32, Float64, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64, Bool

Поддержка комплексных чисел

Да

# dim — измерение, по которому выполняется операция
положительный целочисленный скаляр

Details

Измерение, по которому выполняется операция, заданное как положительный целочисленный скаляр. Если измерение не указано, по умолчанию используется первое измерение массива, размер которого не равен 1.

Рассмотрим двумерный входной массив A:

  • cummax(A,1) работает с последовательными элементами в столбцах A и возвращает массив того же размера, что и A, с кумулятивными максимумами в каждом столбце.

    cummax 1

  • cummax(A,2) работает с последовательными элементами в строках A и возвращает массив того же размера, что и A, с кумулятивными максимумами в каждой строке.

    cummax 2

cummax возвращает A, если dim больше, чем ndims(A).

# direction — направление кумуляции
"forward" (по умолчанию) | "reverse"

Details

Направление кумуляции, заданное одним из следующих значений:

  • "forward" — работа от 1 до конца рабочего измерения;

  • "reverse" — работа от конца до 1 рабочего измерения.

# nanflag — условие пропущенного значения
"omitmissing" (по умолчанию) | "omitnan" | "includemissing" | "includenan"

Details

Условие обработки пропущенного значения, заданное одним из следующих значений:

  • "omitmissing" или "omitnan" — игнорировать значения NaN в A при вычислении кумулятивных максимумов. Если в A есть последовательные начальные значения NaN, то соответствующие элементы в M также являются NaN. Значения "omitmissing" и "omitnan" ведут себя одинаково.

  • "includemissing" или "includenan" — включить значения NaN в A при вычислении кумулятивных максимумов. Элементы в M становятся NaN, как только в A встречается первое значение NaN. Значения "includemissing" и "includenan" ведут себя одинаково.

Выходные аргументы

# M — выходной массив
вектор | матрица | многомерный массив

Details

Выходной массив, возвращаемый в виде вектора, матрицы или многомерного массива.

Примеры

Кумулятивный максимум в векторе

Details

Найдем кумулятивный максимум вектора случайных целых чисел размером 1 на 10.

import EngeeDSP.Functions: randi

v = randi([0,10],1,10)
1×10 Matrix{Float64}:
 3.0  9.0  6.0  6.0  10.0  3.0  8.0  8.0  4.0  6.0
import EngeeDSP.Functions: cummax

M = cummax(v)
1×10 Matrix{Float64}:
 3.0  9.0  6.0  6.0  10.0  3.0  8.0  8.0  4.0  6.0

Кумулятивный максимум в столбцах матрицы

Details

Найдем кумулятивный максимум столбцов матрицы размером 3×3.

A = [3 5 2; 1 6 3; 7 8 1]
3×3 Matrix{Int64}:
 3  5  2
 1  6  3
 7  8  1
import EngeeDSP.Functions: cummax

M = cummax(A)
3×3 Matrix{Float64}:
 3.0  5.0  2.0
 3.0  6.0  3.0
 7.0  8.0  3.0

Кумулятивный максимум в строках матрицы

Details

Найдем кумулятивный максимум строк матрицы размером 3×3.

A = [3 5 2; 1 6 3; 7 8 1]
3×3 Matrix{Int64}:
 3  5  2
 1  6  3
 7  8  1
import EngeeDSP.Functions: cummax

M = cummax(A, 2)
3×3 Matrix{Float64}:
 3.0  5.0  5.0
 1.0  6.0  6.0
 7.0  8.0  8.0

Обратный кумулятивный максимум

Details

Рассчитаем кумулятивный максимум в третьем измерении массива 2×2×3. Укажем направление "reverse", чтобы вычислять значения от конца третьего измерения к началу.

A = cat([1 2; 3 4], [9 10; 11 12], [5 6; 7 8]; dims=3)
2×2×3 Array{Int64, 3}:
[:, :, 1] =
 1  2
 3  4

[:, :, 2] =
  9  10
 11  12

[:, :, 3] =
 5  6
 7  8
import EngeeDSP.Functions: cummax

M = cummax(A, 3, "reverse")
2×2×3 Array{Float64, 3}:
[:, :, 1] =
  9.0  10.0
 11.0  12.0

[:, :, 2] =
  9.0  10.0
 11.0  12.0

[:, :, 3] =
 5.0  6.0
 7.0  8.0

Кумулятивный максимум, включая пропущенные значения

Details

Создадим матрицу, содержащую значения NaN.

A = [3 5 NaN 4; 2 6 2 9; 1 3 0 NaN]
3×4 Matrix{Float64}:
 3.0  5.0  NaN      4.0
 2.0  6.0    2.0    9.0
 1.0  3.0    0.0  NaN

Вычислим кумулятивные максимумы матрицы, включая значения NaN. Для столбцов матрицы, содержащих любое значение NaN, кумулятивные максимальные значения становятся равными NaN, как только встречается первое значение NaN.

import EngeeDSP.Functions: cummax

M = cummax(A, "includenan")
3×4 Matrix{Float64}:
 3.0  5.0  NaN    4.0
 3.0  6.0  NaN    9.0
 3.0  6.0  NaN  NaN

Советы

Значение "reverse" во многих кумулятивных функциях позволяет быстро выполнять направленные вычисления без необходимости переворачивания или отражения входного массива.