Spec-Zone.ru › Octave 6

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, …);

См. также: 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.

: 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.

END_OF_DOCUMENT_MARKER
: 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

Spec-Zone.ru

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