movmedian
Скользящая медиана.
| Библиотека |
|
Синтаксис
Вызов функции
-
M = movmedian(A,k)— возвращает локальные медианные значения поkточкам, где каждая медиана вычисляется в скользящем окне длиныk, которое перемещается по соседним элементам массиваA. Еслиkнечетное, окно центрируется относительно элемента в текущей позиции. Еслиkчетное, окно центрируется относительно текущего и предыдущего элементов. Размер окна автоматически усекается в конечных точках, когда элементов недостаточно для его заполнения. При усечении окна медиана берется только для элементов, заполняющих окно.Mимеет тот же размер, что иA.
-
M = movmedian(___,Name,Value)— задает дополнительные параметры скользящей медианы, используя один или несколько аргументов типа «имя-значение». Например, еслиx— вектор значений времени, тоmovmedian(A,k,"SamplePoints",x)вычисляет скользящую медиану относительно значений времени вx.
Аргументы
Входные аргументы
#
A —
входные данные
вектор | матрица | многомерный массив
Details
Входные данные, заданные как вектор, матрица или многомерный массив.
| Типы данных |
|
#
k —
длина окна
скаляр
Details
Длина окна, заданная как скаляр. Если k — положительное целое число, центрированная медиана включает элемент в текущей позиции и его соседей.
Например, movmedian(A,3) вычисляет массив значений локальной трехточечной медианы.
#
[kb kf] —
длина направленного окна
двухэлементный вектор-строка
Details
Длина направленного окна, заданная как вектор-строка, содержащий два элемента. Если kb и kf — положительные целые числа, вычисление выполняется по kb+kf+1 элементам. Вычисление включает элемент в текущей позиции, kb элементов до текущей позиции и kf элементов после текущей позиции.
Например, movmedian(A,[2 1]) вычисляет массив значений локальной четырехточечной медианы.
#
dim —
измерение, вдоль которого выполняется операция
положительный целочисленный скаляр
Details
Измерение, вдоль которой выполняется операция, указывается как положительный целочисленный скаляр. Если измерение не указано, по умолчанию используется первое измерение массива, размер которого не равен 1.
Аргумент dim указывает измерение, вдоль которого выполняется функция movmedian, то есть направление, в котором перемещается указанное окно.
Рассмотрим входную матрицу A размером m на n:
-
movmedian(A,k,1)вычисляет скользящую медиану поkэлементам для каждого столбцаAи возвращает матрицу размеромmнаn. -
movmedian(A,k,2)вычисляет скользящую медиану поkэлементам для каждой строки матрицыAи возвращает матрицу размеромmнаn.
#
nanflag —
условие пропущенного значения
"includemissing" (по умолчанию) | "includenan" | "omitmissing" | "omitnan"
Details
Условие обработки пропущенного значения, заданное одним из следующих значений:
-
"includemissing"или"includenan"— включить значенияNaNвAпри вычислении каждой медианы. Если какой-либо элемент в окне —NaN, то соответствующий элемент вM—NaN. Значения"includemissing"и"includenan"ведут себя одинаково. -
"omitmissing"или"omitnan"— игнорировать все значенияNaNвAи вычислять каждую медиану по меньшему количеству точек. Если все элементы в окне —NaN, то соответствующий элемент вM—NaN. Значения"omitmissing"и"omitnan"ведут себя одинаково.
Входные аргументы «имя-значение»
Укажите необязательные пары аргументов в формате Name, Value, где Name — имя аргумента, а Value — соответствующее значение. Аргументы типа «имя-значение» должны располагаться после других аргументов, но порядок пар не имеет значения.
Используйте запятые для разделения имени и значения, а Name заключите в кавычки.
Пример: M = movmedian(A,k,"Endpoints","fill").
#
Endpoints —
метод обработки окон вблизи конечных точек
"shrink" (по умолчанию) | "discard" | "fill" | скаляр
Details
Метод обработки окон вблизи конечных точек, заданный одним из следующих вариантов:
| Значение | Описание |
|---|---|
|
Уменьшить размер окна вблизи конечных точек входных данных, чтобы включить только существующие элементы. |
|
Не выводить никакие медианные значения, если окно не полностью перекрывает существующие элементы. |
|
Заменить несуществующие элементы на |
|
Заменить несуществующие элементы указанным числовым или логическим значением. |
#
SamplePoints —
точки выборки для вычисления медиан
вектор
Details
Точки выборки для вычисления медиан, заданные как вектор. Точки выборки представляют собой местоположение данных в A. Точки выборки не обязательно должны быть равномерно распределены. По умолчанию вектор точек выборки равен [1 2 3 … ].
Скользящие окна определяются относительно точек выборки, которые должны быть отсортированы и содержать уникальные элементы. Например, если t — вектор времени, соответствующий входным данным, то movmedian(rand(1,10),3,"SamplePoints",t) имеет окно, представляющее временной интервал между t[i]-1.5 и t[i]+1.5.
Если точки выборки расположены неравномерно и задан параметр Endpoints, то его значение должно быть "shrink".
Выходные аргументы
#
M —
выходные данные
вектор | матрица | многомерный массив
Details
Выходные данные, возвращаемые в виде вектора, матрицы или многомерного массива.
Примеры
Центрированная скользящая медиана вектора
Details
Вычислим трехточечную центрированную скользящую медиану вектора-строки. Если в окне на концах массива меньше трех элементов, вычислим среднее значение по доступным элементам.
import EngeeDSP.Functions: movmedian
A = [4 8 6 -1 -2 -3 -1 3 4 5]
M = movmedian(A,3)
1×10 Matrix{Float64}:
6.0 6.0 6.0 -1.0 -2.0 -2.0 -1.0 3.0 4.0 4.5
Скользящая медиана матрицы
Details
Вычислим трехточечную центрированную скользящую медиану для каждой строки матрицы. Окно начинается с первой строки, скользит горизонтально до конца строки, затем перемещается ко второй строке и так далее. Аргумент размерности равен двум, что позволяет скользить по столбцам матрицы A.
A = [4 8 6; -1 -2 -3; -1 3 4]
3×3 Matrix{Int64}:
4 8 6
-1 -2 -3
-1 3 4
import EngeeDSP.Functions: movmedian
M = movmedian(A,3,2)
3×3 Matrix{Float64}:
6.0 6.0 7.0
-1.5 -2.0 -2.5
1.0 3.0 3.5
Скользящая медиана без учета пропущенных значений
Details
Создадим вектор-строку, содержащую значения NaN.
A = [4 8 NaN -1 -2 -3 NaN 3 4 5];
Вычислим трехточечную центрированную скользящую медиану вектора, исключая значения NaN. Для окон, содержащих любое значение NaN, функция movmedian вычисляет значение с учетом всех элементов, кроме NaN.
import EngeeDSP.Functions: movmedian
M = movmedian(A,3,"omitnan")
1×10 Matrix{Float64}:
6.0 6.0 3.5 -1.5 -2.0 -2.5 0.0 3.5 4.0 4.5
Возврат только медиан полного окна
Details
Вычислим трехточечную центрированную скользящую медиану вектора-строки, но отбросим все вычисления, использующие менее трех точек из выходных данных. Другими словами, вернем только медианы, вычисленные для полного трехэлементного окна, отбросив вычисления в конечных точках.
import EngeeDSP.Functions: movmedian
A = [4 8 6 -1 -2 -3 -1 3 4 5];
M = movmedian(A,3,"Endpoints","discard")
1×8 Matrix{Float64}:
6.0 6.0 -1.0 -2.0 -2.0 -1.0 3.0 4.0