cumsum суммирование элементов массива с накоплением

## Синтаксис

                y = cumsum(x)
                y = cumsum(x, outtype)
                y = cumsum(x, orientation)
                y = cumsum(x, orientation, outtype)

## Аргументы

x

  массив вещественных, комплексных, логических значений, а также полиномов или рациональных дробей. Гиперматрицы или разрежённые логические или числовые матрицы так же поддерживаются.

orientation

  ориентация, она может быть:

  - строкой с возможными значениями: `"*"`, `"r"`, `"c"` или `"m"`

  - или положительное целое число `1 ≤ orientation ≤ ndims(x)`: индекс размерности, вдоль которой сумма с накоплением должна быть вычислена. 1 и "r", и 2 и "c" эквивалентны.

outtype

  тип на выходе: строка с возможными значениями: `"native"` или `"double"`.

y

  Array of size equal to that of `x`.

## Описание

y = cumsum(x) computes and provides the partial cumulative sums `y(i)=sum(x(1:i))`, i.e.:

y(i) = \sum_{u=1}^i x(u)

y = cumsum(x, orientation) computes and returns the partial cumulative sums of

x
along the dimension given by
orientation
:

- если

  orientation
  равна 1 или "r", то:

  y(\mathbf{i},j) = \sum_{u=1}^{\mathbf{i}} x(\mathbf{u},j) , или для N-мерного массива :

  y(\mathbf{i},j,k,\ldots) = \sum_{u=1}^{\mathbf{i}} x(\mathbf{u},j,k,\ldots)

- если

  orientation
  равна 2 или "c", то:

  y(i,\mathbf{j}) = \sum_{u=1}^{\mathbf{j}} x(i,{\mathbf{u}) , или для N-мерного массива :

  y(i,\mathbf{j},k,\ldots) = \sum_{u=1}^{\mathbf{j}} x(i,\mathbf{u},k,\ldots)

- если

  orientation
  равна n, то:

  y(i_1,\ldots,i_{n-1},\mathbf{i_{n}},i_{n+1},\ldots) = \sum_{u=1}^{\mathbf{i_n}} x(i_1,\ldots,i_{n-1},\mathbf{u},i_{n+1},\ldots)

- y = cumsum(x, "*") эквивалентно `y = cumsum(x)`

- y = cumsum(x, "m") эквивалентно `y = cumsum(x, orientation)`, где `orientation` является индексом первой размерности `x`, которая больше 1. Эта опция используется для совместимости с Matlab'ом.

Аргумент

outtype
управляет способом, которым производится суммирование:

- Для массивов чисел с плавающей запятой, полиномов, рациональных дробей вычисление всегда делается через вычисления с плавающей запятой. Опции `"double"` и `"native"` ("естественное") эквивалентны.

- Для массивов целых чисел:

  если `outtype="native"` ("естественное"), то вычисление делается через целочисленные вычисления (по модулю 2^b, где b - число используемых битов);

  если `outtype="double"`, то вычисление делается через вычисления с плавающей запятой.

  Значение по умолчанию `outtype="native"`.

- Для массивов логических значений:

  если `outtype="native"` ("естественное"), то вычисления делаются с помощью булевой алгебры (+ заменяется на |),

  если `outtype="double"`, то вычисление делается через вычисления с плавающей запятой (значения %t заменяются на 1, а значения %f - на 0).

  Значение по умолчанию `outtype="double"`.

Когда входная переменная `x` является разрежённой, пожалуйста, имейте ввиду, что плотность результата `y` будет почти всегда близка к 100%.

## Примеры

    A = [1, 2 ; 3, 4];
    cumsum(A)
    cumsum(A,1)

    I = uint8([2 95 103 ; 254 9 0])
    cumsum(I)   // естественное вычисление
    cumsum(I,"double")
    cumsum(I,2,"double")

    s = poly(0,"s");
    P = [s, %i+s ; s^2, 1];
    cumsum(P),
    cumsum(P,2)

    B = [%t %t %f %f];
    cumsum(B)          // вычисление с плавающей запятой
    cumsum(B,"native") // аналогично or(B)

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

- sum
- cumprod