movsum

Движущаяся сумма

Описание

пример

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
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 | logical

Длина окна, заданная в виде числа или скаляра длительности. Когда 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 - имя аргумента и 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