Skip to content

Instantly share code, notes, and snippets.

@dugagjin
Last active January 24, 2016 01:11
Show Gist options
  • Save dugagjin/2b6fe725ea55d52babe2 to your computer and use it in GitHub Desktop.
Save dugagjin/2b6fe725ea55d52babe2 to your computer and use it in GitHub Desktop.
leakage
% Maak een sinus met f = 2 Hz, en bemonster deze met fs = 10 Hz. Neem N =
% 10,11,...,15. Plot telkens het tijdssignaal en het frequentiespectrum.
% Herschaal het frequentiespectrum met N om de invloed van het aantal
% punten op de schaling van het spectrum te ontwijken.
clear all; clf;
Te = 1;
f = 2;
Fs = 10; % Samplefreqentie
Ts = 1/Fs; % periode
N = [10; 11; 12; 13; 14; 15];
figure(1);
for i=1:length(N)
tvec = [0:N(i)-1]*Ts;
subplot(length(N),2,(i));
plot(tvec, sin(2*pi*f*tvec));
fvec = [0:N(i)-1]/N(i)/Ts;
subplot(length(N),2,(i)+6);
stem(fvec ,abs((fft(sin(2*pi*f*tvec)))));
end
% Maak een signaal u(t) = Asin(wt+rho), n = 0,1,...N-1 met w = 2pi*f en f =
% 80 Hz, t = nTs, A = 1, rho = pi/2, fs = 1/Ts = 1000, en N = 16. Bepaal
% U=fft(u) met schaling 1/N. Plot:
% 1)u(n) als functie van tijd. 2)Het amplitudespectrum in dB als functie
% van de frequentie. 3) Het amplitudespectrum (lineair) als functie van het
% FFT-lijnnummer (DC is lijn 0). 4) Het amplitudespectrum (lineair) als
% functie van de frequentie.
clear all;clf;
f = 80;
w = 2*pi*f;
Fs = 1000;
Ts = 1/Fs;
A = 1;
rho = pi/2;
N = 16;
tvec = [0:N-1]*Ts;
x = A * sin(w*tvec+rho);
fvec = [0:N-1]/N/Ts;
y = fft(x)/N; % Black magic thing fft(x)/N.
% omdat gegeven in opgave
figure(1);
subplot(2,2,1);
plot (tvec, x,'+');
subplot(2,2,2);
plot (fvec, db(y),'+');
subplot(2,2,3);
stem (fvec, abs(y),'+');
fvec = linspace(0,N-1,N); % DFT lijnnummer (=> per sample)
subplot(2,2,4); % everything is ok
stem (fvec, abs(y),'+');
% Herhaal oefening 2 maar kies w zodat een geheel aantal priode gemeten
% wordt. bvb één periode. Wat merkt je op?
clear all;clf;
f = 80;
w = 2*pi*f/8*6; % /8*6 getest maar drie laatste graf zijn fout
Fs = 1000;
Ts = 1/Fs;
A = 1;
rho = pi/2;
N = 16;
tvec = [0:N-1]*Ts;
x = A * sin(w*tvec+rho);
fvec = [0:N-1]/N/Ts;
y = fft(x)/N; % Black magic thing fft(x)/N zie opgave 2
figure(1);
subplot(2,2,1);
% vanaf hier fout.
plot (tvec, x,'+');
subplot(2,2,2);
plot (fvec, db(y),'+');
subplot(2,2,3);
stem (fvec, abs(y),'+');
fvec = linspace(0,N-1,N); % DFT lijnnummer (zie opgave 2)
subplot(2,2,4);
stem (fvec, abs(y),'+');
% Herhaal oefening 3 maar kies nu een "goede" w, maar verdubbel het aantal
% punten N = 32 maar houd Ts constant.
clear all;
f = 80;
w = 2*pi*f/16*13; % geprobeerd met /16*13 maar krijg zotte dinges?
Fs = 1000;
Ts = 1/Fs;
A = 1;
rho = pi/2;
N = 32;
tvec = [0:N-1]*Ts;
x = A * sin(w*tvec+rho);
fvec = [0:N-1]/N/Ts;
y = fft(x)/N; % fft(x)/N, zie opgave 2
figure(1);
subplot(2,2,1);
plot (tvec, x,'+');
% vanaf hier fout.
subplot(2,2,2);
plot (fvec, db(y),'+');
subplot(2,2,3);
stem (fvec, abs(y),'+');
fvec = linspace(0,N-1,N); % DFT lijnnummer (zie opgave 2)
subplot(2,2,4);
stem (fvec, abs(y),'+');
% Herhaal oefening 3 maar kies nu een "goede" w, maar vergroot het aantal
% punten N = 64 maar behoud 1 periode
clear all;
f = 80;
w = 2*pi*f/5; % geprobeerd met 4 ipv 2 maar krijg zotte dinges?
Fs = 1000;
Ts = 1/Fs;
A = 1;
rho = pi/2;
N = 64;
tvec = [0:N-1]*Ts;
x = A * sin(w*tvec+rho);
fvec = [0:N-1]/N/Ts;
y = fft(x)/N;
figure(1);
subplot(2,2,1);
plot (tvec, x,'+');
% vanaf hier mischien fout, no idea #yolo
subplot(2,2,2);
plot (fvec, db(y),'+');
subplot(2,2,3);
stem (fvec, abs(y),'+');
fvec = linspace(0,N-1,N); % DFT lijnnummer (zie opgave 2)
subplot(2,2,4);
stem (fvec, abs(y),'+');
@julienkestemont
Copy link

gebruik : f0 = 1/0.016;
don't know the fuck why, had het geschat maar weet de redenering niet meer

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment