This is an old revision of the document!
In acest laborator vom continua sa exploram transformata Fourier Discreta (DFT), urmarind efectul esantionarii in domeniul frecventa (aparitia sinc-ului din cauza fenomenului de leakage) si metode de rezolvare a acestuia (zero-padding, ferestre, cresterea numarului de esantioane).
In acest exercitiu veti reface exemplul pe care l-am facut la curs cu 2 sinusoide pentru a vedea efectul fenomenului de leakage si a experimenta zero-padding. Pentru asta vom folosi urmatorul semnal:
$s(n) = A_1 \sin(2\pi f_1 n t_s) + A_2 \sin(2\pi f_2 n t_s)$,
unde $f_1$ si $f_2$ sunt frecventele celor doua sinusoide care compun semnalul, si $t_s = 1/f_s$ e perioada de sampling ($f_s = 1/t_s$).
Pentru a face asta urmariti urmatorii pasi:
close all; clear; fs = 8000; f1 = 0000; f2 = 2500; A1 = 1; A2 = 0.5; N = 8; t = 0:(N-1); s1 = A1*sin(2*pi*(f1/fs)*t); s2 = A2*sin(2*pi*(f2/fs)*t); s = s1 + s2; %% Plot signals h = figure; plot(t, s1, 'r--'); hold on; plot(t, s2, 'b-.'); plot(t, s, 'k-'); xlabel('Sample index'); ylabel('Amplitude'); title('Two sinewaves'); legend('s1', 's2', 's1 + s2'); print(h, '-dpng', 'lab7_sinewaves_c.png'); %% Compute/plot fft ffs = fft(s); fidx = (fs/N)*linspace(0, N-1, N); h = figure; stem(fidx, abs(ffs)); title('FFT of signal'); xlabel('DFT frequency index'); print(h, '-dpng', 'lab7_sinewaves_c_fft.png');
Code with zero-padding:
close all; clear; fs = 8000; f1 = 0; f2 = 2000; A1 = 1; A2 = 0.5; N = 8; Z = 64; t = 0:(N-1); tt = 0:(Z-1); s1 = A1*sin(2*pi*(f1/fs)*t); s2 = A2*sin(2*pi*(f2/fs)*t); %% Zero-pad the signals s1 = [s1, zeros(1, Z-N)]; s2 = [s2, zeros(1, Z-N)]; s = s1 + s2; %% Plot signals h = figure; plot(tt, s1, 'r--'); hold on; plot(tt, s2, 'b-.'); plot(tt, s, 'k-'); xlabel('Sample index'); ylabel('Amplitude'); title('Two sinewaves'); legend('s1', 's2', 's1 + s2'); print(h, '-dpng', 'lab7_sinewaves_zeropad_b.png'); %% Compute/plot fft ffs = fft(s); fidx = (fs/Z)*linspace(0, Z-1, Z); h = figure; stem(fidx, abs(ffs)); title('FFT of signal'); xlabel('DFT frequency index'); print(h, '-dpng', 'lab7_sinewaves_zeropad_fft_b.png');