- refactored
This commit is contained in:
Executable
+43
@@ -0,0 +1,43 @@
|
||||
% ##################################################################################
|
||||
% ## Funktion: lburg.m; Burg-Algorithmus ##
|
||||
% ##################################################################################
|
||||
%
|
||||
% function [ARcoeff,g] = lburg(N,q,MA,AR[,NFFT,[,N_vor]]);
|
||||
%
|
||||
% Spektralschaetzung auf der Grundlage des Burg-Algorithmus'
|
||||
% Input-Argumente:
|
||||
% N : Laenge des Datenblockes
|
||||
% q : Grad des Praediktorfehlerfilters
|
||||
% AR,MA : Koeffizienten des ARMA-Modellfilters
|
||||
% [NFFT] : FFT-Laenge
|
||||
% [N_vor]: Anzahl Abtastwerte fuer eingschw. Zustand
|
||||
% Output-Argumente:
|
||||
% ARcoeff: Koeffizienten des Burg-AR-Modells (Zeilenvektor)
|
||||
% g : PARCOR-Koeffizienten
|
||||
|
||||
function [ARcoeff,g] = lburg(N,q,MA,AR,NFFT,N_vor)
|
||||
|
||||
if nargin<5, NFFT=2^10; N_vor=0; end;
|
||||
if nargin<6, N_vor=0; end;
|
||||
|
||||
x = randn(1,N+N_vor);
|
||||
y_all= filter(MA,AR,x);
|
||||
y = y_all(N_vor+1:length(y_all));
|
||||
% Initialisierung
|
||||
e = y; % Vorwaerts-Praediktorfehler
|
||||
b = y; % Rueckwaerts-Praediktorfehler
|
||||
|
||||
% Burg-Algorithmus
|
||||
for ii = 1:q
|
||||
g(ii) = 2*e(2:N+1-ii)*b(1:N-ii)'/(e(2:N+1-ii)*e(2:N+1-ii)'+...
|
||||
b(1:N-ii)*b(1:N-ii)');
|
||||
e2 = e(2:N+1-ii) - g(ii)*b(1:N-ii);
|
||||
b = b(1:N-ii)-conj(g(ii))*e(2:N+1-ii);
|
||||
e = e2;
|
||||
end;
|
||||
|
||||
ARcoeff = [1 -g(1)]; % Levinson-Durbin-Algorithmus
|
||||
for i = 2:q
|
||||
ARcoeff = [ARcoeff 0]-fliplr(conj([ARcoeff 0]))*g(i);
|
||||
end
|
||||
% ##### EOF #####
|
||||
Reference in New Issue
Block a user