Линейное предсказание и авторегрессивное моделирование

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

Введение

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

Для случая авторегрессивного моделирования целью является определение полнополюсного БИХ, который при возбуждении белым шумом выдает сигнал с такой же статистикой, как и процесс авторегрессии, который мы пытаемся смоделировать.

Сгенерируйте AR-сигнал, используя полнополюсный фильтр с белым шумом в качестве входов

Здесь мы используем функцию LPC и конечная импульсная характеристика просто, чтобы придумать параметры, которые мы будем использовать, чтобы создать авторегрессионный сигнал, с которым мы будем работать. Использование FIR1 и LPC здесь не очень важно. Например, мы могли бы заменить d на что-то такое же простое, как [1 1/2 1/3 1/4 1/5 1/6 1/7 1/8] и p0 на что-то вроде 1e-6. Но форма этого фильтра приятнее, поэтому мы используем его вместо этого.

b = fir1(1024, .5);
[d,p0] = lpc(b,7);

Чтобы сгенерировать авторегрессивный сигнал, мы возбудим полнополюсный фильтр с белым Гауссовым шумом отклонения p0. Заметьте, что, чтобы получить отклонение p0, мы должны использовать SQRT (p0) в качестве термина 'gain' в генераторе шума.

rng(0,'twister'); % Allow reproduction of exact experiment
u = sqrt(p0)*randn(8192,1); % White Gaussian noise with variance p0

Теперь мы используем белый Гауссов шум и полнополюсный фильтр, чтобы сгенерировать AR сигнал.

x = filter(1,d,u);

Поиск AR- Модели из сигнала с помощью метода Юла-Уокера

Решая уравнения Юла-Уокера, мы можем определить параметры для полнополюсного фильтра, который при возбуждении белым шумом выдаст AR сигнал, статистика которого совпадает со статистикой данного сигнала, x. еще раз, это называется авторегрессивным моделированием. В порядок решения уравнений Юла-Уокера необходимо оценить автокорреляционную функцию x. Алгоритм Левинсона используется затем для решения уравнений Юла-Уокера эффективным способом. Функция ARYULE все это делает для нас.

[d1,p1] = aryule(x,7);

Сравнение модели AR с сигналом AR

Теперь мы хотели бы вычислить частотную характеристику полнополюсного фильтра, который мы только что использовали для моделирования AR сигнала x. Хорошо известно, что спектральная плотность степени выходного сигнала этого фильтра, когда фильтр возбуждается белым Гауссовым шумом, задается квадратичной величиной его частотной характеристики, умноженной на отклонение входного сигнала белого шума. Одним из способов вычисления этой спектральной плотности выход степени является использование FREQZ следующим образом:

[H1,w1] = freqz(sqrt(p1),d1);

В порядок, чтобы получить представление о том, насколько хорошо мы смоделировали авторегрессивный сигнал x, мы перекрываем степень спектральную плотность выхода модели, вычисленную с помощью FREQZ, с степенью оценкой спектральной плотности x, вычисленной с помощью PERIODOGRAM. Заметьте, что периодограмма масштабируется на 2 * pi и является односторонней. Мы должны настроить для этого в порядок сравнить.

periodogram(x)
hold on
hp = plot(w1/pi,20*log10(2*abs(H1)/(2*pi)),'r'); % Scale to make one-sided PSD
hp.LineWidth = 2;
xlabel('Normalized frequency (\times \pi rad/sample)')
ylabel('One-sided PSD (dB/rad/sample)')
legend('PSD estimate of x','PSD of model output')

Figure contains an axes. The axes with title Periodogram Power Spectral Density Estimate contains 2 objects of type line. These objects represent PSD estimate of x, PSD of model output.

Используйте LPC для выполнения линейного предсказания

Теперь мы переходим к задаче линейного предсказания. Здесь мы пытаемся определить конечную импульсную характеристику предсказательного фильтра. Для этого мы используем LPC, но результат от LPC требует небольшой интерпретации. LPC возвращает коэффициенты всего отбеливающего фильтра A (z), этот фильтр принимает как вход авторегрессивный сигнал x и возвращает как вывод ошибку предсказания. Однако A (z) имеет встроенный в него предсказательный фильтр, в форме B (z) = 1- A (z), где B (z) является предсказательным фильтром. Обратите внимание, что коэффициенты и отклонение ошибок, вычисленные с помощью LPC, по существу совпадают с коэффициентами, вычисленными с помощью ARYULE, но их интерпретация отличается.

[d2,p2] = lpc(x,7);
[d1.',d2.']
ans = 8×2

    1.0000    1.0000
   -3.5245   -3.5245
    6.9470    6.9470
   -9.2899   -9.2899
    8.9224    8.9224
   -6.1349   -6.1349
    2.8299    2.8299
   -0.6997   -0.6997

Теперь мы извлекаем B (z) из A (z), как описано выше, чтобы использовать фильтр линейного предиктора конечной импульсной характеристики для получения оценки будущих значений авторегрессивного сигнала на основе линейных комбинаций прошлых значений.

xh = filter(-d2(2:end),1,x);

Сравнение фактических и предсказанных сигналов

Чтобы получить ощущение того, что мы сделали с 7-таповой конечной импульсной характеристикой предсказательного фильтра, мы строим график (200 отсчетов) исходного авторегрессивного сигнала вместе с оценкой сигнала, полученной из линейного предиктора с учетом задержки в предсказательный фильтр с одной выборкой.

cla
stem([x(2:end),xh(1:end-1)])
xlabel('Sample time')
ylabel('Signal value')
legend('Original autoregressive signal','Signal estimate from linear predictor')
axis([0 200 -0.08 0.1])

Figure contains an axes. The axes with title Periodogram Power Spectral Density Estimate contains 2 objects of type stem. These objects represent Original autoregressive signal, Signal estimate from linear predictor.

Сравнение ошибок предсказания

Степень ошибки предсказания ( отклонение) возвращается как второй выход от LPC. Его значение (теоретически) совпадает с отклонением белого шума, приводящего в действие полнополюсный фильтр в задаче AR моделирования (p1). Другой способ оценки этого отклонения - из самой ошибки предсказания:

p3 = norm(x(2:end)-xh(1:end-1),2)^2/(length(x)-1);

Все следующие значения теоретически одинаковы. Различия обусловлены различными ошибками расчета и приближения.

[p0 p1 p2 p3]
ans = 1×4
10-5 ×

    0.5127    0.5305    0.5305    0.5068

См. также

|