Документация Engee

detrend

Страница в процессе разработки.

Удаляет полиномиальный тренд.

Библиотека

EngeeDSP

Синтаксис

Вызов функции

  • D = detrend(A) — удаляет наиболее прямую линию из данных в A и возвращает оставшиеся данные.

    • Если A — вектор, то detrend вычитает тренд из элементов A.

    • Если A — матрица, то detrend применяется к каждому столбцу отдельно, вычитая каждый тренд из соответствующего столбца A.

    • Если A — многомерный массив, то detrend применяется к каждому столбцу по всем измерениям, вычитая каждый тренд из соответствующего столбца A.

  • D = detrend(A, n) — удаляет полиномиальный тренд n-й степени. Например, при n = 0 функция detrend удаляет среднее значение из A. При n = 1 функция detrend удаляет линейный тренд, что эквивалентно предыдущему синтаксису. При n = 2 функция detrend удаляет квадратичный тренд.

  • D = detrend(A, n, bp) — удаляет непрерывный кусочно-последовательный тренд с сегментами, определяемыми контрольными точками, указанными в векторе bp.

  • D = detrend(___, nanflag) — так же задает, как обрабатывать значения NaN в A для любого из предыдущих синтаксисов. Например, detrend(A,"omitnan") игнорирует значения NaN при вычислении тренда. По умолчанию detrend учитывает значения NaN.

  • D = detrend(___, Name=Value) — также использует аргументы Name=Value в дополнение к любым входным аргументам, представленным в предыдущих синтаксисах.

Аргументы

Входные аргументы

# A — входные данные
вектор | матрица | многомерный массив | таблица

Details

Входные данные, заданные как вектор, матрица, многомерный массив или таблица.

  • Если A — вектор, то detrend вычитает тренд из элементов A.

  • Если A — матрица, то detrend применяется к каждому столбцу отдельно, вычитая каждый тренд из соответствующего столбца A.

  • Если A — многомерный массив, то detrend применяется к каждому столбцу по всем измерениям, вычитая каждый тренд из соответствующего столбца A.

Типы данных

Float32, Float64

# n — степень полинома
скаляр | "constant" | "linear"

Details

Степень полинома, заданная как неотрицательный целый скаляр, или как "constant" (эквивалентно 0) или "linear" (эквивалентно 1).

# bp — опорные точки
вектор

Details

Опорные точки определяют сегменты данных, заданные в виде вектора, который может содержать:

  • Значения отсчетов, указывающие местоположение опорных точек. Значения содержатся либо в векторе по умолчанию [1 2 3 …​], либо задаются аргументом «имя-значение» SamplePoints.

  • Логические значения, где логическая 1 (истина) указывает на опорную точку в соответствующем элементе входных данных. Если bp содержит логические значения, то они должны иметь ту же длину, что и точки отсчета.

Опорные точки полезны, когда требуется вычислить отдельные тренды для разных сегментов данных.

Типы данных

Float32, Float64, Bool

# nanflag — условие отсутствия значения
"includemissing" (по умолчанию) | "includenan" | "omitmissing" | "omitnan"

Details

Условие отсутствия значения, заданное как:

  • "includemissing" или "includenan" учитывает значения NaN в A при вычислении тренда. Если какой-либо элемент в рабочем измерении — NaN, то соответствующие элементы в DNaN. Значения "includemissing" и "includenan" ведут себя одинаково.

  • "omitmissing" или "omitnan" игнорируют значения NaN в A при вычислении тренда. Если все элементы в рабочем измерении — NaN, то соответствующие элементы в DNaN. Значения "omitmissing" и "omitnan" ведут себя одинаково.

Входные аргументы «имя-значение»

Укажите необязательные пары аргументов в формате Name=Value, где Name — имя аргумента, а Value — соответствующее значение. Аргументы типа Name=Value должны располагаться после других аргументов, но порядок пар не имеет значения.

# Continuous — ограничение непрерывности
"true" | "false"

Details

Ограничение непрерывности, заданное одним из следующих значений:

  • "true" — подобранный тренд должен быть непрерывным всюду.

  • "false" — подобранный тренд может содержать разрывы.

# SamplePoints — точки отсчета
скаляр | вектор

Details

Вектор, содержащий координаты данных (точки отсчета) по оси , которые должны быть отсортированы и содержать уникальные элементы. Расстояние между точками отсчета не обязано быть одинаковым. Вектор [1 2 3 …​] используется по умолчанию.

Типы данных

Float32, Float64

Выходные аргументы

# D — выходные данные
вектор | матрица | многомерный массив | таблица

Details

Выходные данные, возвращаемые как вектор, матрица, многомерный массив или таблица.

Типы данных

Float32, Float64

Примеры

Непрерывный линейный тренд

Details

Создадим вектор данных и удалим непрерывный линейный тренд. Построим график исходных данных, данных с исключенным трендом и линейного тренда.

import EngeeDSP.Functions: detrend

t = 0:20
A = 3 * sin.(t) .+ t

D = detrend(A)

plot(t, A, label="Input Data", linewidth=2)
plot!(t, D, label="Detrended Data", linewidth=2)
plot!(t, A - D, linestyle=:dash, color=:black, label="Trend", linewidth=2)

detrend 1

Советы

Функция detrend вычитает из данных среднее значение или линию наилучшего соответствия (наименьших квадратов). Если ваши данные табличные, содержат несколько столбцов данных, представляют собой таблицу или график, то detrend обрабатывает каждый столбец данных отдельно.

Удаление тренда из данных позволяет сосредоточить анализ на колебаниях данных относительно этого тренда. Линейный тренд обычно указывает на систематическое увеличение или уменьшение данных. Систематический сдвиг может быть вызван, например, дрейфом датчика. Хотя тренды могут быть значимыми, некоторые виды анализа дают более глубокое понимание после удаления трендов.

Цель удаления эффектов тренда из данных часто зависит от целей анализа.