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, …);
- slcidx = movslice (N, wlen)
- [slcidx, C, Cpre, Cpost, win] = movslice (…)
-
Генерировать индексы для нарезки вектора длиной N на окна длиной wlen.
FIXME: Описать входные данные N, wlen
FIXME: Описать выходные данные slcidx, C, Cpre, Cpost, win.
См. также: movfun.
- 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