% ################################################################################## % ## 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 #####