Skip to content

Instantly share code, notes, and snippets.

@dugagjin
Created January 9, 2016 23:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dugagjin/3c78b5bcd8be33932c6f to your computer and use it in GitHub Desktop.
Save dugagjin/3c78b5bcd8be33932c6f to your computer and use it in GitHub Desktop.
overgangsverschijnselen 2
% 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