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

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

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

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 object. The axes object contains 4 objects of type line, text.

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

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

Figure contains an axes object. The axes object 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