84 lines
2.5 KiB
Matlab
Executable File
84 lines
2.5 KiB
Matlab
Executable File
% ##################################################################################
|
|
% ## Loesung: Impuls-, Sprungantworten, Frequenzgang ##
|
|
% ##################################################################################
|
|
|
|
% ##### Teilaufgabe a: Bestimmung der Impulsantwort #####
|
|
x = zeros(111,1);
|
|
x(11) = 1;
|
|
b = [1 0.5];
|
|
a = [1 -(1.8*cos(pi/16)) 0.81];
|
|
y = filter(b,a,x);
|
|
k=[-10:100]';
|
|
|
|
figure; stem(k,y); axis([-10 100 -1 5]); grid; xlabel('k');
|
|
ylabel('Amplitude'); title('Impulsantwort');
|
|
|
|
% ##### Teilaufgabe b: Bestimmung der Sprungantwort #####
|
|
x = [zeros(10,1) ; ones(101,1)];
|
|
b = [1 0.5];
|
|
a = [1 -(1.8*cos(pi/16)) 0.81];
|
|
y = filter(b,a,x);
|
|
k=[-10:100]';
|
|
|
|
figure; stem(k,y); axis([-10 100 0 40]); grid; xlabel('k');
|
|
ylabel('Amplitude'); title('Sprungantwort');
|
|
|
|
% ##### Teilaufgabe c: Erste Differenz der Sprungfunktion #####
|
|
d = zeros(111,1);
|
|
d(11) = 1;
|
|
b = [1 0.5];
|
|
a = [1 -(1.8*cos(pi/16)) 0.81];
|
|
h = filter(b,a,d);
|
|
s = [zeros(10,1) ; ones(101,1)];
|
|
g = filter(b,a,s);
|
|
h2 = diff(g,1);
|
|
k = [-10:100]';
|
|
|
|
figure; stem(k(2:length(k)),h2); grid; xlabel('k'); ylabel('Amplitude');
|
|
title('Erste Differenz der Sprungantwort'); axis([-10 100 -1 5]);
|
|
disp('Zum Fortfahren: Druecken Sie eine beliebige Taste...'); pause;
|
|
|
|
% ##### Teilaufgabe d: Ausgangssignal #####
|
|
x = exp(j*[1:100]*(pi/3));
|
|
b = [1 0.5];
|
|
a = [1 -(1.8*cos(pi/16)) 0.81];
|
|
y = filter(b,a,x);
|
|
|
|
figure; plot(real(y)); grid; xlabel('k'); title('Realteil');
|
|
figure; plot(imag(y)); grid; xlabel('k'); title('Imaginaerteil');
|
|
|
|
% ##### Teilaufgabe e: Uebertragungsfunktionen von LTI Systemen #####
|
|
% ### 2:
|
|
b = [1 0.5];
|
|
a = [1 -(1.8*cos(pi/16)) 0.81];
|
|
[H w] = freqz(b,a,128);
|
|
|
|
figure; semilogy(w/pi,abs(H)); grid; xlabel('Omega/pi');
|
|
ylabel('| H(exp(j*Omega)) |');
|
|
figure; plot(w/pi,angle(H)); grid; xlabel('Omega/pi');
|
|
ylabel('b(Omega)');
|
|
|
|
% ### 3:
|
|
b = [1 0.5];
|
|
a = [1 -(1.8*cos(pi/16)) 0.81];
|
|
[H w] = freqz(b,a,128,'whole');
|
|
|
|
figure; semilogy(w/pi,abs(H)); grid; xlabel('Omega/pi');
|
|
ylabel('| H(exp(j*Omega)) |');
|
|
figure; plot(w/pi,angle(H)); grid; xlabel('Omega/pi');
|
|
ylabel('b(Omega)');
|
|
|
|
% ##### Teilaufgabe f: Pol-Nullstellen-Berechnung #####
|
|
b = [1 0.5];
|
|
a = [1 -(1.8*cos(pi/16)) 0.81];
|
|
Nullstellen = roots(b);
|
|
Polstellen = roots(a);
|
|
|
|
% ##### Teilaufgabe h: Pol-Nullstellen-Diagramm #####
|
|
b = [1 0.5];
|
|
a = [1 -(1.8*cos(pi/16)) 0.81];
|
|
|
|
figure; zplane(b,a);title('Pol-Nullstellen-Diagramm');
|
|
xlabel('Realteil'); ylabel('Imaginaerteil');
|
|
% ##### EOF #####
|