exponenta event banner

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