git-svn-id: http://moon:8086/svn/matlab/trunk@153 801c6759-fa7c-4059-a304-17956f83a07c
46 lines
2.2 KiB
Matlab
Executable File
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 #####
|