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"-
Определяет, следует ли включать (значение:
"includenan") или исключать (значение:"omitnan") из данных, передаваемых функции fcn, значенияNaNиNA. По умолчанию используется"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 элементов, а для wlen, заданного массивом, —
nb + na + 1элементов.Необязательный выходной параметр 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"определяет, следует ли включать ("includenan") или исключать ("omitnan") из данных, передаваемых вmad, значенияNaNиNA. По умолчанию используется"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"определяет, следует ли включать ("includenan") или исключать ("omitnan") из данных, передаваемых вmax, значенияNaNиNA. По умолчанию используется"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"определяет, следует ли включать ("includenan") или исключать ("omitnan") из данных, передаваемых вmean, значенияNaNиNA. По умолчанию используется"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 на границах равныNaN, однако это зависит от того, какmovprodобрабатываетNaN, а также от свойства"nancond". - user_value
-
Все элементы окна за пределами массива данных заменяются указанным значением user_value, которое должно быть числовым скаляром. Например, для окна длиной 3,
y(1) = movprod ([user_value, x(1:2)])иy(end) = movprod ([x(end-1:end), user_value]). Часто в качестве user_value выбирают 0. "same"-
Все элементы окна за пределами массива данных заменяются значением x на соответствующей границе. Например, для окна длиной 3,
y(1) = movprod ([x(1), x(1:2)])иy(end) = movprod ([x(end-1:end), x(end)]). "periodic"-
Окно циклически переносится, так что недостающие элементы данных берутся с противоположной стороны массива. Например, для окна длиной 3,
y(1) = movprod ([x(end), x(1:2)])иy(end) = movprod ([x(end-1:end), x(1)]).
-
"SamplePoints"-
Внимание: этот параметр пока не реализован.
Примечание по программированию: эта функция является обёрткой, вызывающей
movfun. Дополнительные параметры и документацию см. в разделеmovfun.См. также: movfun, movslice, movmad, movmax, movmean, movmedian, movmin, movstd, movsum, movvar.
-
:
y =movstd(x, wlen) -
:
y =movstd(x, [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 необходимо указать перед измерением. Чтобы использовать значение 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) -
Вычислить скользящую сумму данных x в скользящем окне длиной wlen.
Если wlen — скаляр, функция
movsumприменяется к скользящему окну длиной wlen. Если wlen — нечётное число, окно симметрично и включает(wlen - 1) / 2элементов с каждой стороны центрального элемента. Например, при вычислении выходного значения с индексом 5 для окна длиной 3movsumиспользует элементы данных[4, 5, 6]. Если wlen — чётное число, окно асимметрично: слева от центрального элемента находитсяwlen/2элементов, а справа —wlen/2 - 1элементов. Например, при вычислении выходного значения с индексом 5 для окна длиной 4movsumиспользует элементы данных[3, 4, 5, 6].Если wlen — массив из двух элементов
[nb, na], функция применяется к скользящему окну-nb:na. Это окно включает nb элементов перед текущим элементом и na элементов после текущего элемента. Текущий элемент включается всегда. Например, дляwlen = [3, 0]используются данные[2, 3, 4, 5]для вычисления значения с индексом 5.Если задан необязательный аргумент dim, вычисления выполняются вдоль этого измерения.
Необязательный строковый аргумент
"nancond"определяет, следует ли включать ("includenan") или исключать ("omitnan") из данных, передаваемых вmovsum, значенияNaNиNA. По умолчанию используется"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 для окна длиной 3movvarиспользует элементы данных[4, 5, 6]. Если wlen — чётное число, окно асимметрично: слева от центрального элемента находитсяwlen/2элементов, а справа —wlen/2 - 1элементов. Например, при вычислении выходного значения с индексом 5 для окна длиной 4movvarиспользует элементы данных[3, 4, 5, 6].Если wlen — массив из двух элементов
[nb, na], функция применяется к скользящему окну-nb:na. Это окно включает nb элементов перед текущим элементом и na элементов после текущего элемента. Текущий элемент включается всегда. Например, дляwlen = [3, 0]используются данные[2, 3, 4, 5]для вычисления значения с индексом 5.Необязательный аргумент opt определяет тип используемой нормализации. Допустимые значения:
- 0:
-
нормализация по N-1 даёт наилучшую несмещённую оценку дисперсии [по умолчанию]
- 1:
нормализация по N даёт второй центральный момент
Если задан необязательный аргумент dim, вычисления выполняются вдоль этого измерения. Аргумент нормализации opt необходимо указать перед измерением. Чтобы использовать значение opt по умолчанию, можно передать пустой входной аргумент
[].Необязательный строковый аргумент
"nancond"определяет, следует ли включать ("includenan") или исключать ("omitnan") из данных, передаваемых вvar, значенияNaNиNA. По умолчанию используется"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–2026 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.4.0/Statistics-on-Sliding-Windows-of-Data.html