levinson

Рекурсия Левинсона-Дурбина

Описание

пример

a = levinson(r,n) возвращает коэффициенты авторегрессионного линейного процесса порядка n который имеет r в качестве своей автокорреляционной последовательности.

пример

[a,e,k] = levinson(___) также возвращает ошибку предсказания e, и коэффициенты отражения, k.

Примеры

свернуть все

Оцените коэффициенты авторегрессивного процесса, заданные как

x(n)=0.1x(n-1)-0.8x(n-2)-0.27x(n-3)+w(n).

a = [1 0.1 -0.8 -0.27];

Сгенерируйте реализацию процесса путем фильтрации белого шума отклонения 0,4.

v = 0.4;
w = sqrt(v)*randn(15000,1);
x = filter(1,a,w);

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

[r,lg] = xcorr(x,'biased');
r(lg<0) = [];

[ar,e] = levinson(r,numel(a)-1)
ar = 1×4

    1.0000    0.0772   -0.7954   -0.2493

e = 0.3909

Оцените коэффициенты отражения для модели 16-го порядка. Проверьте, что единственными коэффициентами отражения, которые находятся вне границ 95% доверия, являются таковые, которые соответствуют правильному порядку модели. Для получения дополнительной информации см. раздел «Выбор порядка AR с частичной автокорреляционной последовательностью».

[~,~,k] = levinson(r,16);
stem(k,'filled')

conf = sqrt(2)*erfinv(0.95)/sqrt(15000);
hold on
[X,Y] = ndgrid(xlim,conf*[-1 1]);
plot(X,Y,'--r')
hold off

Figure contains an axes. The axes contains 3 objects of type stem, line.

Сгенерируйте коэффициенты авторегрессивного процесса, заданные как

x(n)=0.1x(n-1)-0.8x(n-2)-0.27x(n-3)+w(n).

a = [1 0.1 -0.8 -0.27];

Сгенерируйте пять реализаций процесса путем фильтрации белого шума с различными отклонениями.

nr = 5;
v = rand(1,nr)
v = 1×5

    0.8147    0.9058    0.1270    0.9134    0.6324

w = sqrt(v).*randn(15000,nr);
x = filter(1,a,w);

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

[r,lg] = xcorr(x,'biased');

[~,e] = levinson(r(lg>=0,1:nr+1:end),numel(a)-1)
e = 5×1

    0.7957
    0.9045
    0.1255
    0.9290
    0.6291

Входные параметры

свернуть все

Автокорреляционная последовательность, заданная в виде вектора или матрицы. Если r является матрицей, функция находит коэффициенты для каждого столбца r и возвращает их в рядах a.

Пример: [r,lg] = xcorr(randn(1000,1),'biased'); r(lg<0) = [] оценивает автокорреляционную последовательность 1000-выборочного случайного сигнала для положительных лагов.

Типы данных: single | double
Поддержка комплексного числа: Да

Порядок модели, заданный как положительный целочисленный скаляр.

Типы данных: single | double

Выходные аргументы

свернуть все

Авторегрессионные коэффициенты линейного процесса, возвращенные как вектор-строка или матрица. Коэффициенты фильтра упорядочены в нисходящих степенях z–1:

H(z)=1A(z)=11+a(2)z1++a(n+1)zn.

Если r является матрицей, затем каждая строка a соответствует столбцу r.

Ошибка предсказания, возвращенная в виде скаляра или вектора-столбца. Если r является матрицей, затем каждый элемент e соответствует столбцу r.

Коэффициенты отражения, возвращенные как вектор-столбец длины n. Если r является матрицей, затем каждый столбец k соответствует столбцу r.

Примечание

k вычисляется внутренне при вычислении a коэффициенты, поэтому возвращающиеся k одновременно эффективнее, чем преобразование a на k с tf2latc.

Алгоритмы

Рекурсия Левинсона-Дурбина является алгоритмом для нахождения полнополюсного БИХ с предписанной детерминированной автокорреляционной последовательностью. Он имеет приложения в создании фильтра, кодировании и спектральной оценке. Фильтр, который levinson приводит к минимальной фазе.

levinson решает симметричную систему Теплица линейных уравнений

[r(1)r(2)*r(n)*r(2)r(1)r(n1)*r(n)r(2)r(1)] [a(2)a(3)a(n+1)]=[r(2)r(3)r(n+1)],

где   r = [r (1)  ... r (n + 1) ] является вход вектором автокорреляции и r (i)* обозначает комплексный сопряженный с r (i). Область входа r обычно является вектором коэффициентов автокорреляции, где задержка 0 является первым элементом, r (1).

Примечание

Если r не является допустимой автокорреляционной последовательностью, levinson функция может вернуться NaNs, даже если решение существует.

Алгоритм требует O (n2) флопс и, таким образом, намного эффективнее, чем MATLAB® команда backslash для больших n. Однако, levinson функция использует \ для низких порядков, чтобы обеспечить самое быстрое выполнение.

Ссылки

[1] Ljung, Lennart. Система идентификации: теория для пользователя. 2nd Ed. Upper Saddle River, NJ: Prentice Hall, 1999.

Расширенные возможности

.

См. также

| | | |

Представлено до R2006a