Files
matlab/common/l31.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

46 lines
2.2 KiB
Matlab
Executable File

% ##################################################################################
% ## Loesung: Schaetzung des Leistungsdichtespektrums mit Periodogramm ##
% ## -------------------------------------------------------------------------- ##
% ## Benoetigte(s) m-File(s): lper.m ##
% ##################################################################################
% Teilaufg. a: Lineare Filterung
N = 2^12; % mittelwertfreies, gaussvert., weisses Rauschen
N_vor=500; %Anzahl der Abtastwerte um das System in den eingeschw.
%Zustand zu setzen
n = randn(1,N+N_vor);% der Leistung eins
h1 = [1 -4 6 -4 +1]; x1_all = filter(h1,1,n); x1=x1_all(N_vor+1:length(x1_all));
h2 = [1 0.8]; x2_all = filter(1,h2,n); x2=x2_all(N_vor+1:length(x2_all));
% Teilaufg. b: "Wahres" Leistungsdichtespektrum fuer die beiden Filter
NFFT = 2^12;
Sx1x1 = abs(fft(h1,NFFT)).^2; axis_Sx1=[0 1 0 2*max(Sx1x1)];
Sx2x2 = ones(1,NFFT)./abs(fft(h2,NFFT)).^2; axis_Sx2=[0 1 0 1.5*max(Sx2x2)];
fT = 0:1/NFFT:1-1/NFFT;
figure; plot(fT,Sx1x1); axis([0 1 0 1.1*max(Sx1x1)]);xlabel('Omega/2pi = f T');
title('Wahres Leistungsdichtespektrum Sx1x1 von x1');ylabel('Sxx(exp(j*Omega))');
figure; plot(fT,Sx2x2); axis([0 1 0 1.1*max(Sx2x2)]);xlabel('Omega/2pi = f T');
title('Wahres Leistungsdichtespektrum Sx2x2 von x2');ylabel('Sxx(exp(j*Omega))');
input('....Fuer naechste Teilaufgabe: RETURN druecken');
% Teilaufg. c: Periodogramme und wahre Leistungsdichtespektren zeichnen
fT = 0:1/NFFT:1-1/NFFT;
for k=[2^6, 2^8, 2^10, 2^12]
Sxx=lper(x1(1:k) ,NFFT);
figure; plot(fT,Sxx); hold on; ylabel('Per(Om)');
plot(fT,Sx1x1,'--'); xlabel('Omega/2pi = f T');
title(sprintf('Periodogramm von Sx1x1, N=%d', k)); axis(axis_Sx1);
end;
input('....Zum Fortfahren: RETURN druecken');
for k=[2^6, 2^8, 2^10, 2^12]
Sxx=lper(x2(1:k) ,NFFT);
figure; plot(fT,Sxx); hold on; ylabel('Per(Om)');
plot(fT,Sx2x2,'--'); xlabel('Omega/2pi = f T');
title(sprintf('Periodogramm von Sx2x2, N=%d', k)); axis(axis_Sx2);
end;
% ##### EOF #####