Created
January 9, 2016 23:04
-
-
Save dugagjin/3c78b5bcd8be33932c6f to your computer and use it in GitHub Desktop.
overgangsverschijnselen 2
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
% Maak een bodeplot van het systeem met polen: p1,2 = -40 +- 100j en | |
% nullen: z = -100. Versterking is K = 100. Stel de FRF H op met Fs/2 = 128 | |
% en N = 1280. Gebruik 2*real(ifft(H,2*N)) om het impulsantwoord te | |
% berekenen, en selecteer daaruit de eerste 128 punten. Vanaf nu is dus | |
% Fs = 256 en N = 128. Construeer ook de tijdsvector | |
clear all;clf; | |
polen1 = -40 + 100j; | |
polen2 = -40 - 100j; | |
z = -100; | |
Fs = 256; | |
Ts = 1/Fs; | |
N = 1280; | |
K = 100; | |
tvec = [0:N-1]*Ts; | |
fvec = [0:N-1]/N/Ts; | |
w = 2*pi*fvec; | |
s = 1j * w; | |
H = K .* (s-z) ./ ((s - polen1) .* (s - polen2)); | |
subplot(2,2,1); | |
plot(w,db(H)); | |
h = 2*real(ifft(H,2*N)); | |
h = h(1:N); | |
subplot(2,2,2); | |
plot(tvec, h); | |
% Maak daarna een cosinussignaal (de input u) met die frequentie zodat je | |
% precies 8 perioden meet, en convolueer deze met het impulsantwoord. Een | |
% plot hiervan veraadt dat het systeem enige tijd nodig heeft om in | |
% regimetoestand (steady state) te komen. Deze overgang of transient kan je | |
% visualiseren als volgt: selecteer de laatste van de 8 perioden en trek | |
% deze af van het uitgangssignaal. Vergelijk ook het spectrum van het | |
% signaal met en zonder transients. | |
N = 128; % N is verandert dus alles moet gereset | |
h = h(1:N); | |
tvec = [0:N-1]*Ts; | |
fvec = [0:N-1]/N/Ts; | |
Te = N*Ts; | |
f = 8/Te; % zie opdracht => 8 perioden | |
x = cos(2*pi*f*tvec); | |
convolu = conv(x,h); | |
convolu = convolu(1:N); | |
subplot(2,2,3); | |
plot(tvec, x, tvec, convolu,'r'); | |
% Men vergelijk nu de spectrum van de signalen. | |
fftConvolu = fft(convolu); | |
fftcos = fft(x); | |
subplot(2,2,4); | |
plot(fvec,abs(fftConvolu),fvec,abs(fftcos),'r'); | |
% vergelijken met transients | |
figure; | |
result = fft(h) .* fftcos; | |
plot(fvec,db(fftConvolu),fvec,db(result),'r'); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment