Spec-Zone.ru › Octave 9

Следующее: Основные статистические функции, Предыдущее: Дескриптивная статистика, Вверх: Статистика [Оглавление][Индекс]

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)(:,columns(x) * (D-1) + (1:columns(x)));
y = movfun (@fcn, ...);

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

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

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

Входной параметр N должен быть положительным целым числом.

Входной параметр длины скользящего окна wlen может быть скаляром, не равным 1, или двумерным массивом целых чисел. Для скалярных значений, если длина окна нечётна, окно симметрично и включает (wlen - 1) / 2 элементов по обе стороны от центрального элемента. Если wlen чётное, окно асимметрично и содержит wlen/2 элементов слева от центрального элемента и wlen/2 - 1 элементов справа от центрального элемента. Когда wlen — это двумерный массив, [nb, na], окно включает nb элементов слева от текущего элемента и na элементов справа от текущего элемента.

Выходной параметр slcidx — это массив индексов срезов, которые полностью помещаются в вектор, где каждый столбец представляет собой отдельный срез по мере перемещения окна слева направо. Срезы содержат wlen элементов для скалярного wlen или nb + na + 1 элементов для массива wlen.

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

Необязательные выходные параметры Cpre и Cpost содержат элементы вектора в начале и конце вектора соответственно, что приводит к тому, что окно выходит за пределы вектора.

Необязательный выходной параметр win — это столбец векторов с тем же количеством строк, что и slcidx, который содержит скользящее окно, определенное как шаблон относительного положения центра.

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

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

Если wlen является скалярным значением, функция применяется к скользящему окну длиной 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.

END_OF_DOCUMENT_MARKER
: 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 имеет 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, [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 является скаляром, функция применяется к скользящему окну длиной 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" управляет тем, должны ли NaN и NA значения включаться ("includenan"), или исключаться ("omitnan"), из данных, передаваемых 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" управляет тем, следует ли включать NaN и NA значения ("includenan") или исключать ("omitnan") их из данных, передаваемых в 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 — скаляр, функция применяется к скользящему окну длины 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–2023 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/v9.2.0/Statistics-on-Sliding-Windows-of-Data.html

Spec-Zone.ru

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