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

lpc

Коэффициенты линейного предсказывающего фильтра.

Библиотека

EngeeDSP

Синтаксис

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

  • a,g = lpc(x,p) — находит коэффициенты линейного предсказателя порядка p, КИХ-фильтра, который предсказывает текущее значение вещественного временного ряда x на основе прошлых отсчетов. Функция также возвращает дисперсию ошибки предсказания g. Если x — матрица, то функция рассматривает каждый столбец как независимый канал.

Аргументы

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

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

Details

Входной массив, заданный как вектор или матрица. Если x — матрица, то функция рассматривает каждый столбец как независимый канал.

# p — порядок полинома предсказывающего фильтра
length(x)−1 (по умолчанию) | положительный целочисленный скаляр

Details

Порядок полинома предсказывающего фильтра, заданный как целочисленный положительный скаляр. Значение p должно быть меньше или равно длине x.

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

# a — коэффициенты линейного предсказателя
вектор-строка | матрица

Details

Коэффициенты линейного предсказателя, возвращаемые в виде вектора-строки или матрицы. Коэффициенты связывают p прошлых отсчетов x с текущим значением:

# g — дисперсия ошибки предсказания
скаляр | вектор

Details

Дисперсия ошибки предсказания, возвращаемая в виде скаляра или вектора.

Примеры

Оценка временных рядов с использованием метода прямого предсказания

Details

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

Сначала создадим данные сигнала как выходные данные авторегрессионного (АР) процесса, управляемого нормализованным белым гауссовым шумом. Используем последние 4096 отсчетов выходных данных АР-процесса, чтобы избежать переходных процессов при запуске.

import EngeeDSP.Functions: randn, filter, lpc, xcorr

noise = randn(50000,1)
x = filter(1,[1 1/2 1/3 1/4],noise)
x = x[end-4096+1:end]

Вычислим коэффициенты предсказателя и оцененный сигнал.

a,g = lpc(x, 3)
est_x = filter([0; -a[2:end]], 1, x)

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

plot(1:100, x[end-99:end], label="Original signal", linewidth=1)
plot!(1:100, est_x[end-99:end], label="LPC estimate", linestyle=:dash, linewidth=1)

plot!(xlabel="Sample Number", ylabel="Amplitude")
plot!(grid=true)

lpc 1

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

e = x-est_x
acs,lags = xcorr(e,"coeff")

plot(lags', acs)
plot!(xlabel="Lags", ylabel="Normalized Autocorrelation")

lpc 2

Дополнительно

Ошибка предсказания

Details

Ошибку предсказания можно рассматривать как выход ошибки предсказывающего фильтра , где

  • — оптимальный линейный предсказатель;

  • — входной сигнал;

  • — предсказанный сигнал.

rlevinson ru

Алгоритмы

Функция lpc определяет коэффициенты прямого линейного предсказателя, минимизируя ошибку предсказания по методу наименьших квадратов. Она находит применение в проектировании фильтров и кодировании речи.

Функция lpc использует автокорреляционный метод моделирования авторегрессии (АР) для нахождения коэффициентов фильтра. Сгенерированный фильтр может не совсем точно моделировать процесс, даже если последовательность данных действительно является АР-процессом правильного порядка, поскольку метод автокорреляции неявно заключает данные в окно. Другими словами, метод предполагает, что выборки сигнала за пределами длины x равны 0.

Функция lpc вычисляет решение по методу наименьших квадратов для , где

и — длина . Решение задачи наименьших квадратов с использованием нормальных уравнений приводит к уравнениям Юла — Уокера:

где — оценка автокорреляции для x вычисленная с помощью xcorr. Алгоритм Левинсона — Дурбина (см. levinson) решает уравнения Юла — Уокера за операций.

Литература

  1. Jackson, L. B. Digital Filters and Signal Processing. 2nd Edition. Boston: Kluwer Academic Publishers, 1989, pp. 255–257.