movsum

Перемещение суммы

Синтаксис

M = movsum(A,k)
M = movsum(A,[kb kf])
M = movsum(___,dim)
M = movsum(___,nanflag)
M = movsum(___,Name,Value)

Описание

пример

M = movsum(A,k) возвращает массив локального k - суммы точки, где каждая сумма вычисляется по раздвижному окну длины k через соседние элементы A. Когда k нечетен, окно сосредоточено об элементе в текущем положении. Когда k даже, окно сосредоточено о текущих и предыдущих элементах. Размер окна является автоматически усеченным в конечных точках, когда существует недостаточно элементов, чтобы заполнить окно. Когда окно является усеченным, сумма взята только по элементам, которые заполняют окно. M одного размера как A.

  • Если A является вектором, то movsum действует вдоль вектора.

  • Если A является многомерным массивом, то movsum действует вдоль первого измерения массива, размер которого не равняется 1.

пример

M = movsum(A,[kb kf]) вычисляет сумму с окном длины kb+kf+1, который включает элемент в текущее положение, элементы kb назад и элементы kf вперед.

пример

M = movsum(___,dim) возвращает массив скольжения сумм по измерению dim для любого из предыдущих синтаксисов. Например, если A является матрицей, то movsum(A,k,2) действует вдоль столбцов A, вычисляя k - скользящая сумма элемента для каждой строки.

пример

M = movsum(___,nanflag) задает, включать ли или не использовать значения NaN от вычисления для какого-либо из предыдущих синтаксисов. movsum(A,k,'includenan') включает все значения NaN в вычисление, в то время как movsum(A,k,'omitnan') игнорирует их и вычисляет сумму по меньшему количеству точек.

пример

M = movsum(___,Name,Value) задает дополнительные параметры за сумму с помощью одного или нескольких аргументов пары "имя-значение". Например, если x является временным вектором, то movsum(A,k,'SamplePoints',x) вычисляет движущуюся сумму A относительно времен в x.

Примеры

свернуть все

Вычислите движущуюся сумму в центре с тремя точками вектора - строки. Когда существует меньше чем три элемента в окне в конечных точках, берут сумму по элементам, которые доступны.

A = [4 8 6 -1 -2 -3 -1 3 4 5];
M = movsum(A,3)
M = 1×10

    12    18    13     3    -6    -6    -1     6    12     9

Вычислите запаздывание с тремя точками движущаяся сумма вектора - строки. Когда существует меньше чем три элемента в окне в конечных точках, movsum берет сумму по числу элементов, которые доступны.

A = [4 8 6 -1 -2 -3 -1 3 4 5];
M = movsum(A,[2 0])
M = 1×10

     4    12    18    13     3    -6    -6    -1     6    12

Вычислите движущуюся сумму в центре с тремя точками для каждой строки матрицы. Окно запускается на первой строке, скользит горизонтально в конец строки, затем перемещается во вторую строку и так далее. Аргумент размерности равняется двум, которые двигают окно через столбцы A.

A = [4 8 6; -1 -2 -3; -1 3 4]
A = 3×3

     4     8     6
    -1    -2    -3
    -1     3     4

M = movsum(A,3,2)
M = 3×3

    12    18    14
    -3    -6    -5
     2     6     7

Вычислите движущуюся сумму в центре с тремя точками вектора - строки, содержащего два элемента NaN.

A = [4 8 NaN -1 -2 -3 NaN 3 4 5];
M = movsum(A,3)
M = 1×10

    12   NaN   NaN   NaN    -6   NaN   NaN   NaN    12     9

Повторно вычислите сумму, но не используйте значения NaN. Когда movsum отбрасывает элементы NaN, он берет сумму по остающимся элементам в окне.

M = movsum(A,3,'omitnan')
M = 1×10

    12    12     7    -3    -6    -5     0     7    12     9

Вычислите 3-часовую движущуюся сумму в центре данных в A согласно временному вектору t.

A = [4 8 6 -1 -2 -3];
k = hours(3);
t = datetime(16,1,1,0,0,0) + hours(0:5)
t = 1x6 datetime array
Columns 1 through 3

   01-Jan-0016 00:00:00   01-Jan-0016 01:00:00   01-Jan-0016 02:00:00

Columns 4 through 6

   01-Jan-0016 03:00:00   01-Jan-0016 04:00:00   01-Jan-0016 05:00:00

M = movsum(A,k,'SamplePoints',t)
M = 1×6

    12    18    13     3    -6    -5

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

A = [4 8 6 -1 -2 -3 -1 3 4 5];
M = movsum(A,3,'Endpoints','discard')
M = 1×8

    18    13     3    -6    -6    -1     6    12

Входные параметры

свернуть все

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

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | логический

Длина окна, заданная как числовой скаляр или скаляр длительности. Когда k является положительным целочисленным скаляром, сумма в центре включает элемент в текущее положение плюс окружение соседей. Например, сумма с тремя точками, заданная окном длины три результата в следующем вычислении для векторного A:

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | duration

Направленная длина окна, заданная как числовой вектор - строка или вектор - строка длительности, содержащий два элемента. Когда kb и kf являются положительными целочисленными скалярами, вычисление по элементам kb+kf+1. Вычисление включает элемент в текущее положение, элементы kb перед текущим положением и элементами kf после текущего положения. Например, сумма с четырьмя точками, заданная направленным окном [2 1], приводит к следующему вычислению для векторного A:

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | duration

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

dim размерности указывает на размерность, которой movsum управляет вперед, то есть, направление, в котором скользит заданное окно.

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

  • Если dim = 1, то movsum(A,k,1) запускается с первого столбца и скользит вертикально по каждой строке. Сумма вычисляется по элементам k за один раз. Затем это перемещается во второй столбец и повторяет вычисление. Этот процесс продолжается, пока все столбцы не исчерпываются.

  • Если dim = 2, то movsum(A,k,2) запускается с первой строки и скользит горизонтально по каждому столбцу. Сумма вычисляется по элементам k за один раз. Затем это перемещается во вторую строку и повторяет вычисление. Этот процесс продолжается, пока все строки не исчерпываются.

Типы данных: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Условие NaN, заданное как одно из этих значений:

  • 'includenan' — Включайте значения NaN при вычислении суммы, приведении к NaN.

  • 'omitnan' — Проигнорируйте все значения NaN во входе. Если окно содержит только значения NaN, то movsum возвращается 0.

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: M = movsum(A,k,'Endpoints','fill')

Метод, чтобы обработать ведущие и запаздывающие окна, заданные как пара, разделенная запятой, состоящая из 'Endpoints' и одно из следующего:

Значение 'Endpoints'Описание
'shrink'Уменьшите размер окна около конечных точек входа, чтобы включать только существующие элементы.
'discard'Не выводите суммы, когда окно не полностью наложится с существующими элементами.
'fill'Замените несуществующими элементами с NaN.
числовой или логический скалярЗамените несуществующими элементами с заданным числовым или логическим значением.

Типы данных: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string

Точки выборки для вычисления сумм, заданных как пара, разделенная запятой, состоящая из 'SamplePoints' и вектора. Точки выборки представляют местоположение данных в A. Точки выборки не должны быть однородно выбраны. По умолчанию вектором точек выборки является [1 2 3 ... ].

Движущиеся окна заданы относительно точек выборки, которые должны быть отсортированы и содержать уникальные элементы. Например, если t является вектором времен, соответствуя входным данным, то movsum(rand(1,10),3,'SamplePoints',t) имеет окно, которое представляет временной интервал между t(i)-1.5 и t(i)+1.5.

Когда вектор точек выборки имеет тип данных datetime или duration, затем движущаяся длина окна должна иметь, вводят duration.

Если точки выборки неоднородно расположены с интервалами, и пара "имя-значение" 'Endpoints' задана, то ее значением должен быть 'shrink'.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | datetime | duration

Расширенные возможности

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

| | | | |

Введенный в R2016a

Для просмотра документации необходимо авторизоваться на сайте