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"

Определяет, следует ли включать (значение: "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, ...);

См. также: 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 элементов, а для 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 для окна длиной 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] используются данные [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 для окна длиной 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] используются данные [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

Spec-Zone.ru

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