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 должна принимать массив в качестве входного аргумента и применять вычисление по первому измерению, т.е. по столбцам массива.
При применении к массиву (возможно, многомерному) с 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, [nb, na])
- : y = movmad (…, dim)
- : y = movmad (…, "nancond")
- : y = movmad (…, property, value)
-
Вычислить среднее абсолютное отклонение скользящего среднего по скользящему окну длины 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 имеетNaNзначения на границах, хотя это зависит от того, как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, [nb, na])
- : 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 имеетNaNзначения на границах, хотя это зависит от того, как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, [nb, na])
- : 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, [nb, na])
- : 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, [nb, na])
- : 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 на границах, хотя она зависит от того, как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, [nb, na])
- : 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 на границах, хотя она зависит от того, как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, [nb, na])
- : y = movstd (…, opt)
- : y = movstd (…, opt, 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].Необязательный аргумент opt определяет тип нормализации. Допустимые значения:
- 0:
-
нормализация с N-1, предоставляет квадратный корень из наилучшей несмещённой оценки дисперсии [по умолчанию]
- 1:
нормализация с N, предоставляет квадратный корень из второй центральной моменты
Если необязательный аргумент dim задан, операция выполняется по этому измерению. Аргумент нормализации opt должен быть задан перед измерением.
Необязательный строковый аргумент
"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, [nb, na])
- : 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, [nb, na])
- : y = movvar (…, opt)
- : y = movvar (…, opt, dim)
- : y = movvar (…, "nancond")
- : y = movvar (…, property, value)
-
Вычислить скользящую дисперсию на данных x в окне скользящего окна длиной wlen.
Если 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].Необязательный аргумент opt определяет тип нормализации. Допустимые значения:
- 0:
-
нормализует с N-1, обеспечивает наилучшую несмещённую оценку дисперсии [по умолчанию]
- 1:
нормализует с N, это обеспечивает второй момент относительно среднего
Если необязательный аргумент dim задан, операция выполняется по этому измерению. Аргумент нормализации opt должен быть задан перед измерением.
Необязательный строковый аргумент
"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/v6.4.0/Statistics-on-Sliding-Windows-of-Data.html