r,u,k,eEvolution = rlevinson(a,eFinal) — возвращает автокорреляционную последовательность r для предсказывающего фильтра с коэффициентами, указанными в аргументе a, и мощностью конечной ошибки предсказания eFinal. Также возвращает полиномиальную матрицу u рекурсивного предсказывающего фильтра, коэффициенты отражения k и ошибки предсказания eFinal из каждой итерации обратной рекурсии Левинсона — Дурбина.
Полиномиальная матрица рекурсивного предсказывающего фильтра, возвращаемая в виде квадратной матрицы, количество строк и столбцов которой равно количеству элементов a.
Список рекурсивных ошибок предсказания из каждой итерации обратной рекурсии Левинсона — Дурбина, возвращаемый в виде вектора-строки длиной , где — количество элементов вектора a.
Примеры
Оптимальный порядок авторегрессионной модели
Details
Оценим спектр двух синусоидальных волн с добавлением шума, используя авторегрессионную модель. Выберем наилучший порядок модели из группы моделей, возвращаемых обратной рекурсией Левинсона — Дурбина.
Сгенерируем сигнал с частотой 50000 отсчетов. Зададим частоту дискретизации 1 кГц и длительность сигнала 50 секунд. Синусоидальные волны имеют частоты 50 Гц и 55 Гц. Дисперсия шума равна (0.2)2.
import EngeeDSP.Functions: rlevinson
using Random
Random.seed!(42)
Ns = 50_000
Fs = 1000
t = range(0, step=1/Fs, length=Ns)
x = sin.(2π * 50 * t) + sin.(2π * 55 * t) + 0.2 * randn(Ns)
Оценим параметры авторегрессионной модели, используя модель с порядком 100.
ar,eFinal = arcov(x,100)
Решим модель, используя обратную рекурсию Левинсона — Дурбина, чтобы оценить автокорреляционную последовательность, рекурсивные предсказывающие фильтры, коэффициенты отражения и ошибки предсказания.
r,u,k,eEvol=rlevinson(ar,eFinal)
Построим график ошибок предсказания. Добавим горизонтальную линию для мощности конечной ошибки. Ошибка уменьшается с увеличением порядка фильтра до достижения мощности конечной ошибки.
Оценим спектральную плотность мощности (СПМ) для порядков 1, 5, 25, 50 и 100. Оценим СПМ для исходных авторегрессионных параметров.
N = [1, 5, 25, 50, 100]
nFFT = 8096
psdARpred = zeros(nFFT, 5)
for idx in 1:length(N)
order = N[idx]
ARpred = reverse(u[:, order], dims=1)
psdARpred[:, idx] = 1 ./ abs.(fft(ARpred, nFFT)).^2
end
psdAR = 1 ./ abs.(fft(ar, nFFT)).^2
Построим график оценок СПМ. Оценки СПМ для предсказывающих фильтров постепенно приближаются к исходным параметрам авторегрессии по мере увеличения порядка фильтра.
Обратная рекурсия Левинсона — Дурбина реализует алгоритм пошагового решения симметричной системы линейных уравнений Тёплица.
где , , а символ обозначает комплексное сопряжение.
В приложениях линейного предсказания:
Вектор представляет собой автокорреляционную последовательность входных данных для предсказывающего фильтра, где — элемент с нулевой задержкой. Матрица Тёплица — это автокорреляционная матрица:
Вектор представляет собой коэффициенты полинома предсказывающего фильтра в порядке убывания степеней .
Скалярная величина обозначает порядок предсказывающего фильтра.
На рисунке показан типичный фильтр такого типа, где — оптимальный линейный предсказатель, — входной сигнал, — предсказанный сигнал, а — сигнал ошибки предсказания. Дисперсия ошибки предсказания — скалярная мощность ошибки предсказания.
Функция rlevinson решает эту систему уравнений для вычисления автокорреляционной последовательности r, имея вектор a с коэффициентами предсказывающего фильтра. Фильтр должен быть минимально-фазовым, чтобы сгенерировать допустимую автокорреляционную последовательность. Скаляр eFinal представляет собой мощность конечной ошибки предсказания и стремится быть целевой ошибкой оценки рекурсии Левинсона — Дурбина, которую реализует функция rlevinson.
Для получения выходных данных u, k и eEvolution функция rlevinson также выполняет разложение обратной матрицы автокорреляции . Это разложение разрешает матрицы и и позволяет эффективно вычислить обратную матрицу автокорреляции :
Выходной аргумент u возвращает матрицу . Эта матрица содержит рекурсивные полиномы предсказывающего фильтра из каждой итерации обратной рекурсии Левинсона — Дурбина:
Каждый вектор содержит рекурсивные коэффициенты полинома, где — -й коэффициент полинома предсказывающего фильтра -го порядка (т.е., -й шаг рекурсии). Например, коэффициенты полинома предсказывающего фильтра -го порядка можно получить как , где a5 = u[5:−1:1, 5], и этот вектор представляет собой полином . Следовательно, -й столбец содержит вектор коэффициентов входного полинома a, который можно получить, используя (u[p+1:−1:1, p+1])'.
Выходной аргумент k возвращает вектор-столбец с коэффициентами отражения, которые являются сопряженными к недиагональным элементам в первой строке . Другими словами, k возвращается как (u[1, 2:end])':
Выходной аргумент eEvolution возвращает вектор-строку с рекурсивными ошибками предсказания, полученными из диагонали матрицы , за исключением первого элемента:
Каждый элемент перечисляет рекурсивные предсказания полинома предсказывающего фильтра -го порядка (т.е., -й шаг в рекурсии). Например, ошибку предсказания полинома предсказывающего фильтра -го порядка можно получить как e5 = eEvolution(4), и это ошибка предсказания при использовании полинома в качестве предсказывающего фильтра.
Первый элемент на диагонали , , совпадает с первым элементом автокорреляционной последовательности , .
-й элемент на диагонали , , — также последний элемент в eEvolution — совпадает с мощностью конечной ошибки предсказания eFinal.
Литература
Kay, Steven M. Modern Spectral Estimation: Theory and Application. Englewood Cliffs, NJ: Prentice-Hall, 1988.