Полином предсказания

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

Создайте автокорреляционную последовательность, заданную как

r(k)=2452-|k|-27103-|k|,k=0,1,2.

k = 0:2;
rk = (24/5)*2.^(-k)-(27/10)*3.^(-k);

Использование ac2poly получить полином предсказания порядка 2, который

A(z)=1-56z-1+16z-2.

A = ac2poly(rk);

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

zplane(A,1)
grid

Figure contains an axes. The axes contains 4 objects of type line, text.

Обратный полнополюсный фильтр стабилен с полюсами внутри модуля круга.

zplane(1,A)
grid
title('Poles and Zeros')

Figure contains an axes. The axes with title Poles and Zeros contains 4 objects of type line, text.

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

rng default

x = randn(1000,1);
y = filter(1,A,x);

Вычислите автокорреляцию образца реализации AR (2) и покажите, что автокорреляция образца близка к истинной автокорреляции.

[xc,lags] = xcorr(y,2,'biased');
[xc(3:end) rk']
ans = 3×2

    2.2401    2.1000
    1.6419    1.5000
    0.9980    0.9000