- refactored
This commit is contained in:
Executable
+90
@@ -0,0 +1,90 @@
|
||||
% ##################################################################################
|
||||
% ## Loesung: Yule-Walker und Burg-Algorithmus ##
|
||||
% ## -------------------------------------------------------------------------- ##
|
||||
% ## Benoetigte(s) m-File(s): lywex.m, lburg.m ##
|
||||
% ##################################################################################
|
||||
|
||||
NFFT = 2^10; N = 2^12;
|
||||
p=[1 8 32]; MA = [1 -4 6 -4 1]; AR = 1;
|
||||
|
||||
% Teilaufg. a
|
||||
q = length(MA)-1;
|
||||
disp(sprintf('Wahre AKF (rxx(-%d),...,rxx(0),...,rxx(%d)):', q, q));
|
||||
rxx = xcorr(MA).'
|
||||
|
||||
% Teilaufg. b und c:
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%% Yule-Walker %%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% Ausgabe des tatsaechlichen ARMA- und des "geschaetzten" AR-Betragspektrums
|
||||
Omega_norm = 0:1/NFFT:1-1/NFFT;
|
||||
for k=1:3
|
||||
[Sxx_ar, Sxx_arma, ar]=lywex(MA,AR,p(k),NFFT);
|
||||
|
||||
figure; plot(Omega_norm, abs(Sxx_arma),'--'); hold on;
|
||||
plot(Omega_norm, abs(Sxx_ar)); hold off;
|
||||
axis([0 1 0 1.25*max(Sxx_arma)]); ylabel('Sxx(Omega)');
|
||||
title(sprintf('LDS von YW-AR(%d)', p(k))); xlabel('Omega/2pi');
|
||||
figure; zplane(MA,ar); title(sprintf('Pole von YW-AR(%d)',p(k)));
|
||||
xlabel('Realteil'); ylabel('Imaginaerteil');
|
||||
end;
|
||||
|
||||
input('....naechste Teilaufgabe: RETURN druecken');
|
||||
|
||||
% Teilaufg. d:
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%% Burg-Methode %%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% Ausgabe des tatsaechlichen ARMA- und des geschaetzten AR-Betragspektrums
|
||||
Omega_norm = 0:1/NFFT:1-1/NFFT;
|
||||
Sxx_arma = abs(fft(MA,NFFT)./fft(AR,NFFT)).^2;
|
||||
|
||||
for k=1:3
|
||||
ar=lburg(N,p(k),MA,AR,NFFT);
|
||||
|
||||
Sxx_ar = abs(ones(1,NFFT)./fft(ar,NFFT)).^2;
|
||||
Sxx_ar = Sxx_ar/sum(Sxx_ar).*sum(Sxx_arma);
|
||||
figure; plot(Omega_norm, Sxx_arma,'--'); hold on;
|
||||
plot(Omega_norm, Sxx_ar); hold off;
|
||||
axis([0 1 0 1.25*max(Sxx_arma)]); ylabel('Sxx(Omega)');
|
||||
title(sprintf('LDS von Burg-AR(%d)', p(k))); xlabel('Omega/2pi');
|
||||
figure; zplane(MA,ar); title(sprintf('Pole von Burg-AR(%d)',p(k)));
|
||||
xlabel('Realteil'); ylabel('Imaginaerteil');
|
||||
end;
|
||||
|
||||
input('....naechste Teilaufgabe: RETURN druecken');
|
||||
|
||||
% Teilaufg. e:
|
||||
MA=1; AR = [1 0.8];
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%% Yule-Walker %%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% Ausgabe des tatsaechlichen ARMA- und des "geschaetzten" AR-Betragspektrums
|
||||
Omega_norm = 0:1/NFFT:1-1/NFFT;
|
||||
for k=1:3
|
||||
[Sxx_ar, Sxx_arma, ar]=lywex(MA,AR,p(k),NFFT);
|
||||
|
||||
figure; plot(Omega_norm, abs(Sxx_arma),'--'); hold on;
|
||||
plot(Omega_norm, abs(Sxx_ar)); hold off;
|
||||
axis([0 1 0 1.25*max(Sxx_arma)]); ylabel('Sxx(Omega)');
|
||||
title(sprintf('LDS von YW-AR(%d)', p(k))); xlabel('Omega/2pi');
|
||||
figure; zplane(MA,ar); title(sprintf('Pole von YW-AR(%d)',p(k)));
|
||||
xlabel('Realteil'); ylabel('Imaginaerteil');
|
||||
end;
|
||||
|
||||
|
||||
input('....Zum Fortfahren: RETURN druecken');
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%% Burg-Methode %%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% Ausgabe des tatsaechlichen ARMA- und des geschaetzten AR-Betragspektrums
|
||||
Omega_norm = 0:1/NFFT:1-1/NFFT;
|
||||
Sxx_arma = abs(fft(MA,NFFT)./fft(AR,NFFT)).^2;
|
||||
|
||||
for k=1:3
|
||||
|
||||
ar=lburg(N,p(k),MA,AR,NFFT);
|
||||
Sxx_ar = abs(ones(1,NFFT)./fft(ar,NFFT)).^2;
|
||||
Sxx_ar = Sxx_ar/sum(Sxx_ar).*sum(Sxx_arma);
|
||||
figure; plot(Omega_norm, Sxx_arma,'--'); hold on;
|
||||
plot(Omega_norm, Sxx_ar); hold off;
|
||||
axis([0 1 0 1.25*max(Sxx_arma)]); ylabel('Sxx(Omega)');
|
||||
title(sprintf('LDS von Burg-AR(%d)', p(k))); xlabel('Omega/2pi');
|
||||
figure; zplane(AR,ar); title(sprintf('Pole von Burg-AR(%d)',p(k)));
|
||||
xlabel('Realteil'); ylabel('Imaginaerteil');
|
||||
end;
|
||||
% ##### EOF #####
|
||||
Reference in New Issue
Block a user