Spec-Zone.ru › Octave 5

26.2 Статистика по скользящим окнам данных

Часто бывает полезно вычислять описательные статистики по подмножеству (т.е., окну) полного набора данных. Octave предоставляет функцию movfun, которая будет вызывать произвольную функцию-обработчик с окнами данных и накапливать результаты. Многие из наиболее часто используемых функций, такие как скользящее среднее по окну данных (movmean), уже предоставляются.

y = movfun (fcn, x, wlen)
y = movfun (fcn, x, [nb, na])
y = movfun (…, "property", value)

Применить функцию fcn к скользящему окну длиной wlen на данных x.

Если wlen является скаляром, функция fcn применяется к скользящему окну длиной wlen. Когда wlen является нечетным числом, окно является симметричным и включает (wlen - 1) / 2 элементов с обеих сторон от центрального элемента. Например, при вычислении выходного значения в индексе 5 с длиной окна 3, movfun использует элементы данных [4, 5, 6]. Если wlen является четным числом, окно является асимметричным и имеет wlen/2 элементов слева от центрального элемента и wlen/2 - 1 элементов справа от центрального элемента. Например, при вычислении выходного значения в индексе 5 с длиной окна 4, movfun использует элементы данных [3, 4, 5, 6].

Если wlen является массивом с двумя элементами [nb, na], функция применяется к скользящему окну -nb:na. Это окно включает nb элементов до текущего элемента и na элементов после текущего элемента. Текущий элемент всегда включается. Например, при условии wlen = [3, 0], данные, используемые для вычисления индекса 5, это [2, 3, 4, 5].

Во время вычислений входные данные x преобразуются в двумерную матрицу wlen-по-N, и fcn вызывается для этой новой матрицы. Поэтому fcn должна принимать массив в качестве входного аргумента и применять вычисление вдоль измерения 1, т.е. вниз по столбцам массива.

При применении к массиву (возможно, многомерному) с n столбцами, fcn может возвращать результат в двух форматах: Формат 1) массив размера 1-по-n-по-dim3-по-…-по-dimN. Это типичный формат вывода функций ядра Octave. Тип demo ("movfun", 5) для примера такого использования. Формат 2) строка вектора длиной n * numel_higher_dims, где numel_higher_dims — это prod (size (x)(3:end)). Результат fcn для i-го входного столбца должен находиться в выводе по индексам i:n:(n*numel_higher_dims). Этот формат полезен при конкатенации функций в массивы или при использовании nthargout. Тип demo ("movfun", 6) для примера такого случая.

Вычисления можно контролировать, указав пары свойство/значение property/value. Допустимые свойства:

"dim"

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

"Endpoints"

Это свойство управляет тем, как рассчитываются результаты на границах (краях) окна. Возможные значения:

"shrink" (по умолчанию)

Окно усекается в начале и конце массива, чтобы исключить элементы, для которых нет исходных данных. Например, с окном длиной 3, y(1) = fcn (x(1:2)), и y(end) = fcn (x(end-1:end)).

"discard"

Любые значения y, использующие окно, выходящее за пределы исходного массива данных, удаляются. Например, с 10-элементным вектором данных и окном длиной 3, выходной вектор будет содержать только 8 элементов. Первый элемент потребовал бы вычисления функции для индексов [0, 1, 2] и поэтому отбрасывается. Последний элемент потребовал бы вычисления функции для индексов [9, 10, 11] и поэтому отбрасывается.

"fill"

Любые элементы окна за пределами массива данных заменяются на NaN. Например, с окном длиной 3, y(1) = fcn ([NaN, x(1:2)]), и y(end) = fcn ([x(end-1:end), NaN]). Этот вариант обычно приводит к тому, что y имеет NaN значения на границах, хотя это зависит от того, как fcn обрабатывает NaN, а также от свойства "nancond".

user_value

Любые элементы окна за пределами массива данных заменяются указанным значением user_value, которое должно быть численным скаляром. Например, с окном длиной 3, y(1) = fcn ([user_value, x(1:2)]), и y(end) = fcn ([x(end-1:end), user_value]). Распространенным выбором для user_value является 0.

"same"

Любые элементы окна за пределами массива данных заменяются значением x на границе. Например, с окном длиной 3, y(1) = fcn ([x(1), x(1:2)]), и y(end) = fcn ([x(end-1:end), x(end)]).

"periodic"

Окно оборачивается так, что любые отсутствующие элементы данных берутся с другой стороны данных. Например, с окном длиной 3, y(1) = fcn ([x(end), x(1:2)]), и y(end) = fcn ([x(end-1:end), x(1)]).

Обратите внимание, что для некоторых из этих вариантов размер окна на границах не такой же, как для центральной части, и fcn должен работать в этих случаях.

"nancond"

Управляет тем, должны ли NaN и NA значения включаться (значение: "includenan") или исключаться (значение: "omitnan") из данных, передаваемых fcn. По умолчанию "includenan". Внимание: вариант "omitnan" еще не реализован.

"outdim"

Строка вектора, которая выбирает, какие измерения вычисления будут отображаться в выводе y. Это полезно только тогда, когда fcn возвращает N-мерный массив в Формате 1. По умолчанию возвращаются все выходные измерения.

Примечание по программированию: свойство "outdim" можно использовать для экономии памяти, когда вывод fcn имеет много измерений или когда обёртка для базовой функции, которая выбирает желаемые выходные данные, слишком дорогостояща. Если проблема памяти не стоит, самый простой способ выбрать выходные измерения — сначала вычислить полный результат с movfun, а затем отфильтровать этот результат с помощью индексирования. Если сложность кода не является проблемой, можно создать обёртку, используя анонимные функции. Например, если basefcn — это функция, возвращающая выходной строчный вектор размерностью K, а необходимо только измерение D, то можно использовать следующую обёртку.

fcn = @(x) basefcn (x)(:,size(x,2) * (D-1) + (1:size(x,2)));
y = movfun (@fcn, …);

См. также: movslice, prepad, postpad, permute, reshape.

slcidx = movslice (N, wlen)
[slcidx, C, Cpre, Cpost, win] = movslice (…)

Генерировать индексы для нарезки вектора длиной N на окна длиной wlen.

FIXME: Описать входные данные N, wlen

FIXME: Описать выходные данные slcidx, C, Cpre, Cpost, win.

См. также: movfun.

END_OF_DOCUMENT_MARKER
y = movmad (x, wlen)
y = movmad (x, [na, nb])
y = movmad (…, dim)
y = movmad (…, "nancond")
y = movmad (…, property, value)

Вычислить скользящее среднее абсолютное отклонение (MAD) по скользящему окну длины wlen для данных x.

Если wlen является скаляром, функция mad применяется к скользящему окну длины wlen. Когда wlen нечётное число, окно симметричное и включает (wlen - 1) / 2 элементов с обеих сторон от центрального элемента. Например, при вычислении выходного значения в индексе 5 с длиной окна 3, movmad использует элементы данных [4, 5, 6]. Если wlen является чётным числом, окно асимметричное и содержит wlen/2 элементов слева от центрального элемента и wlen/2 - 1 элементов справа от центрального элемента. Например, при вычислении выходного значения в индексе 5 с длиной окна 4, movmad использует элементы данных [3, 4, 5, 6].

Если wlen является массивом с двумя элементами [nb, na], функция применяется к скользящему окну -nb:na. Это окно включает nb элементов перед текущим элементом и na элементов после текущего элемента. Текущий элемент всегда включается. Например, при заданных wlen = [3, 0], данные, используемые для вычисления индекса 5, равны [2, 3, 4, 5].

Если указан необязательный аргумент dim, операция выполняется по этой размерности.

Необязательный строковый аргумент "nancond" управляет тем, включаются ли NaN и NA значения ("includenan") или исключаются ("omitnan") из данных, передаваемых в mad. По умолчанию значение "includenan". Внимание: опция "omitnan" ещё не реализована.

Вычисления можно контролировать, задавая пары property/value. Допустимые свойства:

"Endpoints"

Это свойство определяет, как результаты вычисляются на границах (краях) окна. Возможные значения:

"shrink" (по умолчанию)

Окно усекается в начале и в конце массива, чтобы исключить элементы, для которых нет исходных данных. Например, при длине окна 3, y(1) = mad (x(1:2)), и y(end) = mad (x(end-1:end)).

"discard"

Любые значения y, использующие окно, выходящее за пределы исходного массива данных, удаляются. Например, при 10-элементном векторе данных и длине окна 3, результат будет содержать только 8 элементов. Первый элемент потребует вычисления функции по индексам [0, 1, 2] и поэтому отбрасывается. Последний элемент потребует вычисления функции по индексам [9, 10, 11] и поэтому отбрасывается.

"fill"

Любые элементы окна, выходящие за пределы массива данных, заменяются на NaN. Например, при длине окна 3, y(1) = mad ([NaN, x(1:2)]), и y(end) = mad ([x(end-1:end), NaN]). Эта опция обычно приводит к значениям y на границах, хотя она зависит от того, как mad обрабатывает NaN, а также от свойства "nancond".

user_value

Любые элементы окна, выходящие за пределы массива данных, заменяются заданным значением user_value, которое должно быть скалярным числовым значением. Например, при длине окна 3, y(1) = mad ([user_value, x(1:2)]), и y(end) = mad ([x(end-1:end), user_value]). Частое значение для user_value — 0.

"same"

Любые элементы окна, выходящие за пределы массива данных, заменяются значением x на границе. Например, при длине окна 3, y(1) = mad ([x(1), x(1:2)]), и y(end) = mad ([x(end-1:end), x(end)]).

"periodic"

Окно «заворачивается», так что любые недостающие элементы данных берутся с другой стороны данных. Например, при длине окна 3, y(1) = mad ([x(end), x(1:2)]), и y(end) = mad ([x(end-1:end), x(1)]).

"SamplePoints"

Внимание: эта опция ещё не реализована.

Примечание для программистов: эта функция является оболочкой, которая вызывает movfun. Для дополнительных опций и документации, см. movfun.

См. также: movfun, movslice, movmax, movmean, movmedian, movmin, movprod, movstd, movsum, movvar.

y = movmax (x, wlen)
y = movmax (x, [na, nb])
y = movmax (…, dim)
y = movmax (…, "nancond")
y = movmax (…, property, value)

Вычислить скользящий максимум по скользящему окну длины wlen для данных x.

Если wlen является скаляром, функция max применяется к скользящему окну длины wlen. Когда wlen нечётное число, окно симметричное и включает (wlen - 1) / 2 элементов с обеих сторон от центрального элемента. Например, при вычислении выходного значения в индексе 5 с длиной окна 3, movmax использует элементы данных [4, 5, 6]. Если wlen является чётным числом, окно асимметричное и содержит wlen/2 элементов слева от центрального элемента и wlen/2 - 1 элементов справа от центрального элемента. Например, при вычислении выходного значения в индексе 5 с длиной окна 4, movmax использует элементы данных [3, 4, 5, 6].

Если wlen является массивом с двумя элементами [nb, na], функция применяется к скользящему окну -nb:na. Это окно включает nb элементов перед текущим элементом и na элементов после текущего элемента. Текущий элемент всегда включается. Например, при заданных wlen = [3, 0], данные, используемые для вычисления индекса 5, равны [2, 3, 4, 5].

Если указан необязательный аргумент dim, операция выполняется по этой размерности.

Необязательный строковый аргумент "nancond" управляет тем, включаются ли NaN и NA значения ("includenan") или исключаются ("omitnan") из данных, передаваемых в max. По умолчанию значение "includenan". Внимание: опция "omitnan" ещё не реализована.

Вычисления можно контролировать, задавая пары property/value. Допустимые свойства:

"Endpoints"

Это свойство определяет, как результаты вычисляются на границах (краях) окна. Возможные значения:

"shrink" (по умолчанию)

Окно усекается в начале и в конце массива, чтобы исключить элементы, для которых нет исходных данных. Например, при длине окна 3, y(1) = max (x(1:2)), и y(end) = max (x(end-1:end)).

"discard"

Любые значения y, использующие окно, выходящее за пределы исходного массива данных, удаляются. Например, при 10-элементном векторе данных и длине окна 3, результат будет содержать только 8 элементов. Первый элемент потребует вычисления функции по индексам [0, 1, 2] и поэтому отбрасывается. Последний элемент потребует вычисления функции по индексам [9, 10, 11] и поэтому отбрасывается.

"fill"

Любые элементы окна, выходящие за пределы массива данных, заменяются на NaN. Например, при длине окна 3, y(1) = max ([NaN, x(1:2)]), и y(end) = max ([x(end-1:end), NaN]). Эта опция обычно приводит к значениям y на границах, хотя она зависит от того, как max обрабатывает NaN, а также от свойства "nancond".

user_value

Любые элементы окна, выходящие за пределы массива данных, заменяются заданным значением user_value, которое должно быть скалярным числовым значением. Например, при длине окна 3, y(1) = max ([user_value, x(1:2)]), и y(end) = max ([x(end-1:end), user_value]). Частое значение для user_value — 0.

"same"

Любые элементы окна, выходящие за пределы массива данных, заменяются значением x на границе. Например, при длине окна 3, y(1) = max ([x(1), x(1:2)]), и y(end) = max ([x(end-1:end), x(end)]).

"periodic"

Окно «заворачивается», так что любые недостающие элементы данных берутся с другой стороны данных. Например, при длине окна 3, y(1) = max ([x(end), x(1:2)]), и y(end) = max ([x(end-1:end), x(1)]).

"SamplePoints"

Внимание: эта опция ещё не реализована.

Примечание для программистов: эта функция является оболочкой, которая вызывает movfun. Для дополнительных опций и документации, см. movfun.

См. также: movfun, movslice, movmad, movmean, movmedian, movmin, movprod, movstd, movsum, movvar.

y = movmean (x, wlen)
y = movmean (x, [na, nb])
y = movmean (…, dim)
y = movmean (…, "nancond")
y = movmean (…, property, value)

Вычислите скользящее среднее по скользящему окну длины wlen на данных x.

Если wlen является скалярным значением, функция mean применяется к скользящему окну длины wlen. Когда wlen является нечётным числом, окно симметричное и включает (wlen - 1) / 2 элементов по обе стороны от центрального элемента. Например, при вычислении выходного значения в индексе 5 с длиной окна 3, movmean использует элементы данных [4, 5, 6]. Если wlen является чётным числом, окно асимметричное и имеет wlen/2 элементов слева от центрального элемента и wlen/2 - 1 элементов справа от центрального элемента. Например, при вычислении выходного значения в индексе 5 с длиной окна 4, movmean использует элементы данных [3, 4, 5, 6].

Если wlen является массивом из двух элементов [nb, na], функция применяется к скользящему окну -nb:na. Это окно включает nb элементов перед текущим элементом и na элементов после текущего элемента. Текущий элемент всегда включается. Например, при заданных wlen = [3, 0], данные, используемые для вычисления индекса 5, являются [2, 3, 4, 5].

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

Необязательный строковый аргумент "nancond" управляет тем, включаются ли NaN и NA значения ("includenan") или исключаются ("omitnan") из данных, переданных в mean. По умолчанию используется "includenan". Внимание: опция "omitnan" пока не реализована.

Вычисление можно контролировать, указав пары property/value. Допустимые свойства:

"Endpoints"

Это свойство управляет тем, как результаты вычисляются на границах (концах) окна. Возможные значения:

"shrink" (по умолчанию)

Окно обрезается в начале и в конце массива, чтобы исключить элементы, для которых нет исходных данных. Например, при длине окна 3, y(1) = mean (x(1:2)), и y(end) = mean (x(end-1:end)).

"discard"

Любые значения y, использующие окно, выходящее за пределы исходного массива данных, удаляются. Например, с вектором данных из 10 элементов и окном длиной 3, на выходе будет только 8 элементов. Первый элемент потребовал бы вычисления функции над индексами [0, 1, 2] и, следовательно, отбрасывается. Последний элемент потребовал бы вычисления функции над индексами [9, 10, 11] и, следовательно, отбрасывается.

"fill"

Любые элементы окна вне массива данных заменяются на NaN. Например, с окном длиной 3, y(1) = mean ([NaN, x(1:2)]), и y(end) = mean ([x(end-1:end), NaN]). Эта опция обычно приводит к тому, что y имеет NaN значения на границах, хотя это зависит от того, как mean обрабатывает NaN, и также от свойства "nancond".

user_value

Любые элементы окна вне массива данных заменяются заданным значением user_value, которое должно быть скалярным числом. Например, с окном длиной 3, y(1) = mean ([user_value, x(1:2)]), и y(end) = mean ([x(end-1:end), user_value]). Распространённым выбором для user_value является 0.

"same"

Любые элементы окна вне массива данных заменяются значением x на границе. Например, с окном длиной 3, y(1) = mean ([x(1), x(1:2)]), и y(end) = mean ([x(end-1:end), x(end)]).

"periodic"

Окно зацикливается, так что любые недостающие элементы данных берутся с другой стороны данных. Например, с окном длиной 3, y(1) = mean ([x(end), x(1:2)]), и y(end) = mean ([x(end-1:end), x(1)]).

"SamplePoints"

Внимание: Эта опция пока не реализована.

Примечание для программистов: Эта функция является обёрткой, которая вызывает movfun. Для дополнительных опций и документации см. movfun.

См. также: movfun, movslice, movmad, movmax, movmedian, movmin, movprod, movstd, movsum, movvar.

y = movmedian (x, wlen)
y = movmedian (x, [na, nb])
y = movmedian (…, dim)
y = movmedian (…, "nancond")
y = movmedian (…, property, value)

Вычислите скользящую медиану по скользящему окну длины wlen на данных x.

Если wlen является скалярным значением, функция movmedian применяется к скользящему окну длины wlen. Когда wlen является нечётным числом, окно симметричное и включает (wlen - 1) / 2 элементов по обе стороны от центрального элемента. Например, при вычислении выходного значения в индексе 5 с длиной окна 3, movmedian использует элементы данных [4, 5, 6]. Если wlen является чётным числом, окно асимметричное и имеет wlen/2 элементов слева от центрального элемента и wlen/2 - 1 элементов справа от центрального элемента. Например, при вычислении выходного значения в индексе 5 с длиной окна 4, movmedian использует элементы данных [3, 4, 5, 6].

Если wlen является массивом из двух элементов [nb, na], функция применяется к скользящему окну -nb:na. Это окно включает nb элементов перед текущим элементом и na элементов после текущего элемента. Текущий элемент всегда включается. Например, при заданных wlen = [3, 0], данные, используемые для вычисления индекса 5, являются [2, 3, 4, 5].

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

Необязательный строковый аргумент "nancond" управляет тем, включаются ли NaN и NA значения ("includenan") или исключаются ("omitnan") из данных, переданных в movmedian. По умолчанию используется "includenan". Внимание: опция "omitnan" пока не реализована.

Вычисление можно контролировать, указав пары property/value. Допустимые свойства:

"Endpoints"

Это свойство управляет тем, как результаты вычисляются на границах (концах) окна. Возможные значения:

"shrink" (по умолчанию)

Окно обрезается в начале и в конце массива, чтобы исключить элементы, для которых нет исходных данных. Например, при длине окна 3, y(1) = movmedian (x(1:2)), и y(end) = movmedian (x(end-1:end)).

"discard"

Любые значения y, использующие окно, выходящее за пределы исходного массива данных, удаляются. Например, с вектором данных из 10 элементов и окном длиной 3, на выходе будет только 8 элементов. Первый элемент потребовал бы вычисления функции над индексами [0, 1, 2] и, следовательно, отбрасывается. Последний элемент потребовал бы вычисления функции над индексами [9, 10, 11] и, следовательно, отбрасывается.

"fill"

Любые элементы окна вне массива данных заменяются на NaN. Например, с окном длиной 3, y(1) = movmedian ([NaN, x(1:2)]), и y(end) = movmedian ([x(end-1:end), NaN]). Эта опция обычно приводит к тому, что y имеет NaN значения на границах, хотя это зависит от того, как movmedian обрабатывает NaN, и также от свойства "nancond".

user_value

Любые элементы окна вне массива данных заменяются заданным значением user_value, которое должно быть скалярным числом. Например, с окном длиной 3, y(1) = movmedian ([user_value, x(1:2)]), и y(end) = movmedian ([x(end-1:end), user_value]). Распространённым выбором для user_value является 0.

"same"

Любые элементы окна вне массива данных заменяются значением x на границе. Например, с окном длиной 3, y(1) = movmedian ([x(1), x(1:2)]), и y(end) = movmedian ([x(end-1:end), x(end)]).

"periodic"

Окно зацикливается, так что любые недостающие элементы данных берутся с другой стороны данных. Например, с окном длиной 3, y(1) = movmedian ([x(end), x(1:2)]), и y(end) = movmedian ([x(end-1:end), x(1)]).

"SamplePoints"

Внимание: Эта опция пока не реализована.

Примечание для программистов: Эта функция является обёрткой, которая вызывает movfun. Для дополнительных опций и документации см. movfun.

См. также: movfun, movslice, movmad, movmax, movmean, movmin, movprod, movstd, movsum, movvar.

y = movmin (x, wlen)
y = movmin (x, [na, nb])
y = movmin (…, dim)
y = movmin (…, "nancond")
y = movmin (…, property, value)

Вычислите минимальное значение скользящего окна длины wlen на данных x.

Если wlen является скаляром, функция min применяется к скользящему окну длины wlen. Когда wlen является нечётным числом, окно симметрично и включает (wlen - 1) / 2 элементов с обеих сторон от центрального элемента. Например, при вычислении результата в индексе 5 с длиной окна 3, movmin использует элементы данных [4, 5, 6]. Если wlen является чётным числом, окно асимметрично и содержит wlen/2 элементов слева от центрального элемента и wlen/2 - 1 элементов справа от центрального элемента. Например, при вычислении результата в индексе 5 с длиной окна 4, movmin использует элементы данных [3, 4, 5, 6].

Если wlen является массивом из двух элементов [nb, na], функция применяется к скользящему окну -nb:na. Это окно включает nb элементов перед текущим элементом и na элементов после текущего элемента. Текущий элемент всегда включается. Например, для wlen = [3, 0], данные, используемые для вычисления индекса 5, — [2, 3, 4, 5].

Если задан необязательный аргумент dim, работа выполняется по этому измерению.

Необязательный строковый аргумент "nancond" контролирует, должны ли NaN и NA значения включаться ("includenan") или исключаться ("omitnan") из данных, переданных в min. По умолчанию используется "includenan". Внимание: опция "omitnan" ещё не реализована.

Вычисление можно контролировать, указав пары property/value. Допустимые свойства:

"Endpoints"

Это свойство управляет тем, как результаты вычисляются на границах (краях) окна. Возможные значения:

"shrink" (по умолчанию)

Окно обрезается в начале и в конце массива, чтобы исключить элементы, для которых нет исходных данных. Например, с окном длиной 3, y(1) = min (x(1:2)), и y(end) = min (x(end-1:end)).

"discard"

Любые значения y, использующие окно, выходящее за пределы исходного массива данных, удаляются. Например, с 10-элементным вектором данных и окном длиной 3, выходной массив будет содержать только 8 элементов. Первый элемент потребует вычисления функции над индексами [0, 1, 2] и поэтому будет отброшен. Последний элемент потребует вычисления функции над индексами [9, 10, 11] и поэтому будет отброшен.

"fill"

Любые элементы окна за пределами массива данных заменяются на NaN. Например, с окном длиной 3, y(1) = min ([NaN, x(1:2)]), и y(end) = min ([x(end-1:end), NaN]). Эта опция обычно приводит к тому, что y содержит NaN значения на границах, хотя она зависит от того, как min обрабатывает NaN, а также от свойства "nancond".

user_value

Любые элементы окна за пределами массива данных заменяются заданным значением user_value, которое должно быть числовым скаляром. Например, с окном длиной 3, y(1) = min ([user_value, x(1:2)]), и y(end) = min ([x(end-1:end), user_value]). Часто в качестве user_value выбирается 0.

"same"

Любые элементы окна за пределами массива данных заменяются значением x на границе. Например, с окном длиной 3, y(1) = min ([x(1), x(1:2)]), и y(end) = min ([x(end-1:end), x(end)]).

"periodic"

Окно циклически сдвигается, так что любые отсутствующие элементы данных берутся с другой стороны данных. Например, с окном длиной 3, y(1) = min ([x(end), x(1:2)]), и y(end) = min ([x(end-1:end), x(1)]).

"SamplePoints"

Внимание: эта опция ещё не реализована.

Примечание для программистов: Эта функция является оболочкой, которая вызывает movfun. Дополнительные опции и документация см. в movfun.

См. также: movfun, movslice, movmad, movmax, movmean, movmedian, movprod, movstd, movsum, movvar.

y = movprod (x, wlen)
y = movprod (x, [na, nb])
y = movprod (…, dim)
y = movprod (…, "nancond")
y = movprod (…, property, value)

Вычислите скользящее произведение над скользящим окном длины wlen на данных x.

Если wlen является скаляром, функция movprod применяется к скользящему окну длины wlen. Когда wlen является нечётным числом, окно симметрично и включает (wlen - 1) / 2 элементов с обеих сторон от центрального элемента. Например, при вычислении результата в индексе 5 с длиной окна 3, movprod использует элементы данных [4, 5, 6]. Если wlen является чётным числом, окно асимметрично и содержит wlen/2 элементов слева от центрального элемента и wlen/2 - 1 элементов справа от центрального элемента. Например, при вычислении результата в индексе 5 с длиной окна 4, movprod использует элементы данных [3, 4, 5, 6].

Если wlen является массивом из двух элементов [nb, na], функция применяется к скользящему окну -nb:na. Это окно включает nb элементов перед текущим элементом и na элементов после текущего элемента. Текущий элемент всегда включается. Например, для wlen = [3, 0], данные, используемые для вычисления индекса 5, — [2, 3, 4, 5].

Если задан необязательный аргумент dim, работа выполняется по этому измерению.

Необязательный строковый аргумент "nancond" контролирует, должны ли NaN и NA значения включаться ("includenan") или исключаться ("omitnan") из данных, переданных в movprod. По умолчанию используется "includenan". Внимание: опция "omitnan" ещё не реализована.

Вычисление можно контролировать, указав пары property/value. Допустимые свойства:

"Endpoints"

Это свойство управляет тем, как результаты вычисляются на границах (краях) окна. Возможные значения:

"shrink" (по умолчанию)

Окно обрезается в начале и в конце массива, чтобы исключить элементы, для которых нет исходных данных. Например, с окном длиной 3, y(1) = movprod (x(1:2)), и y(end) = movprod (x(end-1:end)).

"discard"

Любые значения y, использующие окно, выходящее за пределы исходного массива данных, удаляются. Например, с 10-элементным вектором данных и окном длиной 3, выходной массив будет содержать только 8 элементов. Первый элемент потребует вычисления функции над индексами [0, 1, 2] и поэтому будет отброшен. Последний элемент потребует вычисления функции над индексами [9, 10, 11] и поэтому будет отброшен.

"fill"

Любые элементы окна за пределами массива данных заменяются на NaN. Например, с окном длиной 3, y(1) = movprod ([NaN, x(1:2)]), и y(end) = movprod ([x(end-1:end), NaN]). Эта опция обычно приводит к тому, что y содержит NaN значения на границах, хотя она зависит от того, как movprod обрабатывает NaN, а также от свойства "nancond".

user_value

Любые элементы окна за пределами массива данных заменяются заданным значением user_value, которое должно быть числовым скаляром. Например, с окном длиной 3, y(1) = movprod ([user_value, x(1:2)]), и y(end) = movprod ([x(end-1:end), user_value]). Часто в качестве user_value выбирается 0.

"same"

Любые элементы окна за пределами массива данных заменяются значением x на границе. Например, с окном длиной 3, y(1) = movprod ([x(1), x(1:2)]), и y(end) = movprod ([x(end-1:end), x(end)]).

"periodic"

Окно циклически сдвигается, так что любые отсутствующие элементы данных берутся с другой стороны данных. Например, с окном длиной 3, y(1) = movprod ([x(end), x(1:2)]), и y(end) = movprod ([x(end-1:end), x(1)]).

"SamplePoints"

Внимание: эта опция ещё не реализована.

Примечание для программистов: Эта функция является оболочкой, которая вызывает movfun. Дополнительные опции и документация см. в movfun.

См. также: movfun, movslice, movmad, movmax, movmean, movmedian, movmin, movstd, movsum, movvar.

y = movstd (x, wlen)
y = movstd (x, [na, nb])
y = movstd (…, dim)
y = movstd (…, "nancond")
y = movstd (…, property, value)

Вычислите скользящее стандартное отклонение по скользящему окну длиной wlen для данных x.

Если wlen является скаляром, функция movstd применяется к скользящему окну длиной wlen. Когда wlen является нечётным числом, окно симметрично и включает (wlen - 1) / 2 элементов с каждой стороны от центрального элемента. Например, при вычислении выходного значения в индексе 5 с длиной окна 3, movstd использует элементы данных [4, 5, 6]. Если wlen является чётным числом, окно асимметрично и содержит wlen/2 элементов слева от центрального элемента и wlen/2 - 1 элементов справа от центрального элемента. Например, при вычислении выходного значения в индексе 5 с длиной окна 4, movstd использует элементы данных [3, 4, 5, 6].

Если wlen является массивом из двух элементов [nb, na], функция применяется к скользящему окну -nb:na. Это окно включает nb элементов перед текущим элементом и na элементов после текущего элемента. Текущий элемент всегда включается. Например, при заданных wlen = [3, 0], данные, используемые для вычисления индекса 5, — это [2, 3, 4, 5].

Если задан необязательный аргумент dim, то работа выполняется по этому измерению.

Необязательный строковый аргумент "nancond" управляет тем, следует ли включать ("includenan") или исключать ("omitnan") значения NaN и NA из данных, передаваемых функции movstd. По умолчанию используется "includenan". Внимание: опция "omitnan" пока не реализована.

Вычисление можно контролировать, задавая пары property/value. Допустимые свойства:

"Endpoints"

Это свойство управляет тем, как результаты вычисляются на границах (концах) окна. Возможные значения:

"shrink" (по умолчанию)

Окно обрезается в начале и конце массива, чтобы исключить элементы, для которых нет исходных данных. Например, при длине окна 3, y(1) = movstd (x(1:2)), и y(end) = movstd (x(end-1:end)).

"discard"

Любые значения y, использующие окно, выходящее за пределы исходного массива данных, удаляются. Например, при 10-элементном векторе данных и длине окна 3, выходной вектор будет содержать только 8 элементов. Первый элемент потребует вычисления функции над индексами [0, 1, 2] и поэтому будет отброшен. Последний элемент потребует вычисления функции над индексами [9, 10, 11] и поэтому будет отброшен.

"fill"

Любые элементы окна, находящиеся за пределами массива данных, заменяются значением NaN. Например, при длине окна 3, y(1) = movstd ([NaN, x(1:2)]), и y(end) = movstd ([x(end-1:end), NaN]). Эта опция обычно приводит к тому, что y содержит значения NaN на границах, хотя это зависит от того, как movstd обрабатывает NaN, а также от свойства "nancond".

user_value

Любые элементы окна, находящиеся за пределами массива данных, заменяются заданным значением user_value, которое должно быть числовым скаляром. Например, при длине окна 3, y(1) = movstd ([user_value, x(1:2)]), и y(end) = movstd ([x(end-1:end), user_value]). Распространённым выбором для user_value является 0.

"same"

Любые элементы окна, находящиеся за пределами массива данных, заменяются значением x на границе. Например, при длине окна 3, y(1) = movstd ([x(1), x(1:2)]), и y(end) = movstd ([x(end-1:end), x(end)]).

"periodic"

Окно циклически перематывается так, что отсутствующие элементы данных берутся с другой стороны данных. Например, при длине окна 3, y(1) = movstd ([x(end), x(1:2)]), и y(end) = movstd ([x(end-1:end), x(1)]).

"SamplePoints"

Внимание: Эта опция пока не реализована.

Примечание для программистов: Эта функция является оболочкой, которая вызывает movfun. Для дополнительных опций и документации см. movfun.

См. также: movfun, movslice, movmad, movmax, movmean, movmedian, movmin, movprod, movsum, movvar.

y = movsum (x, wlen)
y = movsum (x, [na, nb])
y = movsum (…, dim)
y = movsum (…, "nancond")
y = movsum (…, property, value)

Вычислите скользящую сумму по скользящему окну длиной wlen для данных x.

Если wlen является скаляром, функция movsum применяется к скользящему окну длиной wlen. Когда wlen является нечётным числом, окно симметрично и включает (wlen - 1) / 2 элементов с каждой стороны от центрального элемента. Например, при вычислении выходного значения в индексе 5 с длиной окна 3, movsum использует элементы данных [4, 5, 6]. Если wlen является чётным числом, окно асимметрично и содержит wlen/2 элементов слева от центрального элемента и wlen/2 - 1 элементов справа от центрального элемента. Например, при вычислении выходного значения в индексе 5 с длиной окна 4, movsum использует элементы данных [3, 4, 5, 6].

Если wlen является массивом из двух элементов [nb, na], функция применяется к скользящему окну -nb:na. Это окно включает nb элементов перед текущим элементом и na элементов после текущего элемента. Текущий элемент всегда включается. Например, при заданных wlen = [3, 0], данные, используемые для вычисления индекса 5, — это [2, 3, 4, 5].

Если задан необязательный аргумент dim, то работа выполняется по этому измерению.

Необязательный строковый аргумент "nancond" управляет тем, следует ли включать ("includenan") или исключать ("omitnan") значения NaN и NA из данных, передаваемых функции movsum. По умолчанию используется "includenan". Внимание: опция "omitnan" пока не реализована.

Вычисление можно контролировать, задавая пары property/value. Допустимые свойства:

"Endpoints"

Это свойство управляет тем, как результаты вычисляются на границах (концах) окна. Возможные значения:

"shrink" (по умолчанию)

Окно обрезается в начале и конце массива, чтобы исключить элементы, для которых нет исходных данных. Например, при длине окна 3, y(1) = movsum (x(1:2)), и y(end) = movsum (x(end-1:end)).

"discard"

Любые значения y, использующие окно, выходящее за пределы исходного массива данных, удаляются. Например, при 10-элементном векторе данных и длине окна 3, выходной вектор будет содержать только 8 элементов. Первый элемент потребует вычисления функции над индексами [0, 1, 2] и поэтому будет отброшен. Последний элемент потребует вычисления функции над индексами [9, 10, 11] и поэтому будет отброшен.

"fill"

Любые элементы окна, находящиеся за пределами массива данных, заменяются значением NaN. Например, при длине окна 3, y(1) = movsum ([NaN, x(1:2)]), и y(end) = movsum ([x(end-1:end), NaN]). Эта опция обычно приводит к тому, что y содержит значения NaN на границах, хотя это зависит от того, как movsum обрабатывает NaN, а также от свойства "nancond".

user_value

Любые элементы окна, находящиеся за пределами массива данных, заменяются заданным значением user_value, которое должно быть числовым скаляром. Например, при длине окна 3, y(1) = movsum ([user_value, x(1:2)]), и y(end) = movsum ([x(end-1:end), user_value]). Распространённым выбором для user_value является 0.

"same"

Любые элементы окна, находящиеся за пределами массива данных, заменяются значением x на границе. Например, при длине окна 3, y(1) = movsum ([x(1), x(1:2)]), и y(end) = movsum ([x(end-1:end), x(end)]).

"periodic"

Окно циклически перематывается так, что отсутствующие элементы данных берутся с другой стороны данных. Например, при длине окна 3, y(1) = movsum ([x(end), x(1:2)]), и y(end) = movsum ([x(end-1:end), x(1)]).

"SamplePoints"

Внимание: Эта опция пока не реализована.

Примечание для программистов: Эта функция является оболочкой, которая вызывает movfun. Для дополнительных опций и документации см. movfun.

См. также: movfun, movslice, movmad, movmax, movmean, movmedian, movmin, movprod, movstd, movvar.

y = movvar (x, wlen)
y = movvar (x, [na, nb])
y = movvar (…, dim)
y = movvar (…, "nancond")
y = movvar (…, property, value)

Вычислите скользящую дисперсию по скользящему окну длины wlen на данных x.

Если wlen является скаляром, функция var применяется к скользящему окну длины wlen. Когда wlen является нечётным числом, окно является симметричным и включает (wlen - 1) / 2 элементов по обе стороны от центрального элемента. Например, при вычислении выходного значения в индексе 5 с длиной окна 3, movvar использует элементы данных [4, 5, 6]. Если wlen является чётным числом, окно является асимметричным и имеет wlen/2 элементов слева от центрального элемента и wlen/2 - 1 элементов справа от центрального элемента. Например, при вычислении выходного значения в индексе 5 с длиной окна 4, movvar использует элементы данных [3, 4, 5, 6].

Если wlen является массивом с двумя элементами [nb, na], функция применяется к скользящему окну -nb:na. Это окно включает nb элементов перед текущим элементом и na элементов после текущего элемента. Текущий элемент всегда включается. Например, задано wlen = [3, 0], данные, используемые для вычисления индекса 5, составляют [2, 3, 4, 5].

Если задан необязательный аргумент dim, операция выполняется вдоль этого измерения.

Необязательный строковый аргумент "nancond" управляет тем, включаются ли NaN и NA значения ("includenan") или исключаются ("omitnan") из данных, передаваемых в var. По умолчанию используется "includenan". Внимание: опция "omitnan" пока не реализована.

Вычисления можно контролировать, указав пары property/value. Допустимые свойства:

"Endpoints"

Это свойство управляет тем, как рассчитываются результаты на границах (конечных точках) окна. Возможные значения:

"shrink" (по умолчанию)

Окно обрезается в начале и в конце массива, чтобы исключить элементы, для которых нет исходных данных. Например, при длине окна 3, y(1) = var (x(1:2)), и y(end) = var (x(end-1:end)).

"discard"

Любые значения y, использующие окно, выходящее за пределы исходного массива данных, удаляются. Например, с 10-элементным вектором данных и окном длиной 3, на выходе будет только 8 элементов. Первый элемент потребовал бы вычисления функции над индексами [0, 1, 2] и поэтому отбрасывается. Последний элемент потребовал бы вычисления функции над индексами [9, 10, 11] и поэтому отбрасывается.

"fill"

Любые элементы окна за пределами массива данных заменяются на NaN. Например, при длине окна 3, y(1) = var ([NaN, x(1:2)]), и y(end) = var ([x(end-1:end), NaN]). Эта опция обычно приводит к тому, что у y есть NaN значения на границах, хотя это зависит от того, как var обрабатывает NaN, и также от свойства "nancond".

user_value

Любые элементы окна за пределами массива данных заменяются заданным значением user_value, которое должно быть числовым скаляром. Например, при длине окна 3, y(1) = var ([user_value, x(1:2)]), и y(end) = var ([x(end-1:end), user_value]). Часто user_value выбирают равным 0.

"same"

Любые элементы окна за пределами массива данных заменяются значением x на границе. Например, при длине окна 3, y(1) = var ([x(1), x(1:2)]), и y(end) = var ([x(end-1:end), x(end)]).

"periodic"

Окно обматывается, так что любые отсутствующие элементы данных берутся с другой стороны данных. Например, при длине окна 3, y(1) = var ([x(end), x(1:2)]), и y(end) = var ([x(end-1:end), x(1)]).

"SamplePoints"

Внимание: Эта опция пока не реализована.

Примечание по программированию: Эта функция является оболочкой, которая вызывает movfun. Для дополнительных опций и документации, см. movfun.

См. также: movfun, movslice, movmad, movmax, movmean, movmedian, movmin, movprod, movstd, movsum.

© 1996–2022 The Octave Project Developers
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://docs.octave.org/v5.2.0/Statistics-on-Sliding-Windows-of-Data.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API