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

fillgaps

Заполнение разрывов с помощью моделирования авторегрессии.

Библиотека

EngeeDSP

Синтаксис

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

  • y = fillgaps(x) — заменяет все значения NaN, присутствующие в сигнале x, оценками, экстраполированными из прямого и обратного авторегрессионного подбора оставшихся отсчетов. Если x — матрица, то функция рассматривает каждый столбец как независимый канал.

  • y = fillgaps(x,maxlen) — также задает максимальное количество отсчетов maxlen, используемых в оценке. Используйте этот аргумент, если ваш сигнал не очень хорошо характеризуется во всем диапазоне одним авторегрессионным процессом.

  • y = fillgaps(x,maxlen,order) — также задает порядок модели авторегрессии order, используемой для восстановления разрывов.

  • fillgaps(___,out=:plot) — строит графики исходных отсчетов и реконструированного сигнала. Этот синтаксис принимает любые входные аргументы из предыдущих синтаксисов.

Аргументы

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

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

Details

Входной сигнал, заданный как вектор или матрица. Если x — матрица, то ее столбцы рассматриваются как независимые каналы. Сигнал x содержит значения NaN для представления пропущенных отсчетов.

Типы данных

Float32, Float64

Поддержка комплексных чисел

Да

# maxlen — максимальная длина последовательностей предсказания
целое положительное число

Details

Максимальная длина последовательностей предсказания, заданная как целое положительное число. Если не задавать maxlen, то fillgaps итеративно подбирает модели авторегрессии, используя все предыдущие точки для прямой оценки и все будущие точки для обратной оценки.

Типы данных

Float32, Float64

# order — порядок модели авторегрессии
целое положительное число

Details

Порядок модели авторегрессии, заданный как целое положительное число. Порядок усекается, если order бесконечен или если не хватает доступных отсчетов. Если не задавать order, то fillgaps выбирает порядок, который минимизирует информационный критерий Акаике.

Типы данных

Float32, Float64

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

# y — реконструированный сигнал
вектор | матрица

Details

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

Примеры

Заполнение разрывов в функциях

Details

Сгенерируем функцию, состоящую из суммы двух синусоид и лоренцевой кривой. Функция дискретизирована с частотой 200 Гц в течение 2 секунд. Построим график.

import EngeeDSP.Functions: fillgaps

x = -1:0.005:1
f = 1 ./ (1 .+ 10 .* x.^2) .+ sin.(2*pi*3*x)/10 .+ cos.(25*pi*x)/10

plot(x, f)

fillgaps 1

Вставим разрывы на интервалах (−0.8,−0.6), (−0.2,0.1) и (0.4,0.7).

h = copy(f)

h[(x .> -0.8) .& (x .< -0.6)] .= NaN
h[(x .> -0.2) .& (x .< 0.1)] .= NaN
h[(x .> 0.4) .& (x .< 0.7)] .= NaN

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

y = fillgaps(h)

plot(x, f, seriestype = :scatter, markersize = 2, color = :blue, label = "Original")
plot!(x, y, linewidth = 2, color = :red, label = "Reconstructed")

fillgaps 2

Повторим вычисления, но теперь зададим максимальную длину последовательности предсказания 3 отсчета и порядок модели 1. Построим графики исходной и восстановленной функций. В самом простом случае fillgaps выполняет линейную аппроксимацию.

y = fillgaps(h,3,1)

plot(x, f, seriestype = :scatter, markersize = 2, color = :blue, label = "Original")
plot!(x, y, linewidth = 2, color = :red, label = "Reconstructed")

fillgaps 3

Зададим максимальную длину последовательности предсказания 80 отсчетов и порядок модели 40. Построим графики исходной и восстановленной функций.

y = fillgaps(h,80,40)

plot(x, f, seriestype = :scatter, markersize = 2, color = :blue, label = "Original")
plot!(x, y, linewidth = 2, color = :red, label = "Reconstructed")

fillgaps 4

Изменим порядок модели на 70. Построим графики исходной и восстановленной функций.

y = fillgaps(h,80,70)

plot(x, f, seriestype = :scatter, markersize = 2, color = :blue, label = "Original")
plot!(x, y, linewidth = 2, color = :red, label = "Reconstructed")

fillgaps 5

Реконструкция несовершенна, поскольку при очень высоких порядках модели часто возникают проблемы с конечной точностью.

Литература

  1. Akaike, Hirotugu. Fitting Autoregressive Models for Prediction. Annals of the Institute of Statistical Mathematics. Vol. 21, 1969, pp. 243–247.

  2. Kay, Steven M. Modern Spectral Estimation: Theory and Application. Englewood Cliffs, NJ: Prentice Hall, 1988.

  3. Orfanidis, Sophocles J. Optimum Signal Processing: An Introduction. 2nd Edition. New York: McGraw-Hill, 1996.