Files
matlab/common/l34.m
T
jens b31f3e7435 - added
git-svn-id: http://moon:8086/svn/matlab/trunk@153 801c6759-fa7c-4059-a304-17956f83a07c
2021-03-22 20:28:22 +00:00

91 lines
3.5 KiB
Matlab
Executable File

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