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, ...);
-
:
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.
-
:
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