exponenta event banner

levinson

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

Описание

пример

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

пример

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

Примеры

свернуть все

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

x (n) = 0,1 (n-1) -0,8 (n-2) -0,27 (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,1 (n-1) -0,8 (n-2) -0,27 (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) z−1+⋯+a (n + 1) z − n.

Если 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 (n 1) *  ⋮⋮⋱⋮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] Люнг, Леннарт. Идентификация системы: теория для пользователя. 2-я эд. река Верхнее Седло, Нью-Джерси: Прентис Холл, 1999.

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

.

См. также

| | | |

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