lpc
Коэффициенты линейного предсказывающего фильтра.
| Библиотека |
|
Синтаксис
Вызов функции
-
a,g = lpc(x,p)— находит коэффициенты линейного предсказателя порядкаp, КИХ-фильтра, который предсказывает текущее значение вещественного временного рядаxна основе прошлых отсчетов. Функция также возвращает дисперсию ошибки предсказанияg. Еслиx— матрица, то функция рассматривает каждый столбец как независимый канал.
Аргументы
Входные аргументы
#
x —
входной массив
вектор | матрица
Details
Входной массив, заданный как вектор или матрица. Если 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)

Вычислим ошибки предсказания и автокорреляционную последовательность ошибок предсказания. Построим график автокорреляции. Ошибка предсказания приблизительно представляет собой белый гауссовский шум, как и предполагалось для входного процесса авторегрессионной модели третьего порядка.
e = x-est_x
acs,lags = xcorr(e,"coeff")
plot(lags', acs)
plot!(xlabel="Lags", ylabel="Normalized Autocorrelation")

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