Main Content

levinson

Levinson-Durbin 재귀

설명

예제

a = levinson(r,n)r을 자기상관 시퀀스로 갖는, n차 자기회귀 선형 과정의 계수를 반환합니다.

예제

[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);

상관관계 함수를 추정합니다. 음수 지연값의 상관관계 값을 삭제합니다. Levinson-Durbin 재귀를 사용하여 모델 계수를 추정합니다. 예측 오차가 입력값의 분산에 대응됨을 확인합니다.

[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 Order Selection with Partial Autocorrelation Sequence 항목을 참조하십시오.

[~,~,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 object. The axes object 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];

서로 다른 분산을 갖는 백색 잡음을 필터링함으로써 자기회귀 과정의 구현 5개를 생성합니다.

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);

상관관계 함수를 추정합니다. 음수 지연값의 상관관계 값과 상호상관 항을 삭제합니다. Levinson-Durbin 재귀를 사용하여 올바른 모델 차수에 대해 예측 오차를 추정하고, 예측 오차가 입력 잡음 신호의 분산에 대응됨을 확인합니다.

[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의 열에 대응됩니다.

참고

a 계수를 계산하는 동안 k가 내부적으로 계산됩니다. 따라서 k를 동시에 반환하는 것이 tf2latc를 사용하여 ak로 변환하는 것보다 효율적입니다.

알고리즘

Levinson-Durbin 재귀는 미리 정해진 결정적 자기상관 시퀀스로 전극점 IIR 필터를 구하는 알고리즘입니다. 이 알고리즘은 필터 설계, 코딩, 스펙트럼 추정 분야에 응용됩니다. 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 함수는 해가 있더라도 NaN을 반환할 수 있습니다.

이 알고리즘에는 O(n2) 플롭스가 필요하므로, n 값이 클 경우 MATLAB® 백슬래시 명령보다 훨씬 더 효율적입니다. 그러나 levinson 함수는 낮은 차수의 경우 가능한 가장 빠른 실행 속도를 위해 \를 사용합니다.

참고 문헌

[1] Ljung, Lennart. System Identification: Theory for the User. 2nd Ed. Upper Saddle River, NJ: Prentice Hall, 1999.

확장 기능

버전 내역

R2006a 이전에 개발됨

참고 항목

| | | |