Categories
DSP

Pengaruh Panjang Data, Jendela & Frekuensi Cuplik pada FFT

Artikel yang saya tulis ini merupakan jawaban detil dari soal yang ada di bukunya Li Tan, 2008, “Digital Signal Processing: Fundamentals and Application“, nomor 4.17 dan 4.18. Intinya diketahui sebuah isyarat yang terdiri dari 3 macam sinusoidal dengan persamaan di bawah ini. Akan dilakukan eksperimen pengaruh penggunaan jendela, panjang data dan frekuensi pencuplikan Fs pada algoritma FFT untuk menemukan spektrum dari sinyal ini.

Matlab-nya sebagai berikut:function p4_17(Fs);

switch nargin
case 0
Fs = 8000;
end

t=[0:1/Fs:0.1];
x1 = 5 * cos(2*pi*500*t);
x2 = 5 * cos((2*pi*1200*t)+(0.25*pi));
x3 = 5 * cos((2*pi*1800*t)+(0.5*pi));

subplot(3,1,1); plot(t,x1);
title(‘x1(t)’);
subplot(3,1,2); plot(t,x2);
title(‘x2(t)’);
subplot(3,1,3); plot(t,x3);
title(‘x3(t)’);

x = x1+x2+x3;
figure;
plot(t,x);
title(‘x(t) = x1(t) + x2(t) + x3(t)’);

L = length(x);

NFFT = 2^nextpow2(L); % Next power of 2 from length of y
Y = fft(x,NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2);

figure;
% Plot single-sided amplitude spectrum.
plot(f,2*abs(Y(1:NFFT/2)))
title(‘Spektrum Sisi-tunggal dari x(t) tanpa jendela’)
xlabel(‘Frekuensi (Hz)’)
ylabel(‘|Y(f)|’);

% ———————-TRIANGULAR——————————
x_tri = x .* triang(L)’;

Y = fft(x_tri,NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2);

figure;
% Plot single-sided amplitude spectrum.
plot(f,2*abs(Y(1:NFFT/2)))
title(‘Spektrum Sisi-tunggal dari x(t) menggunakan jendela Segitiga’)
xlabel(‘Frekuensi (Hz)’)
ylabel(‘|Y(f)|’);

% ———————-HAMMING——————————
x_ham = x .* hamming(L)’;

Y = fft(x_ham,NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2);

figure;
% Plot single-sided amplitude spectrum.
plot(f,2*abs(Y(1:NFFT/2)))
title(‘Spektrum Sisi-tunggal dari x(t) menggunakan jendela Hamming’)
xlabel(‘Frekuensi (Hz)’)
ylabel(‘|Y(f)|’);

% ———————-HANNING——————————
x_han = x .* hann(L)’;

Y = fft(x_han,NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2);

figure;
% Plot single-sided amplitude spectrum.
plot(f,2*abs(Y(1:NFFT/2)))
title(‘Spektrum Sisi-tunggal dari x(t) menggunakan jendela Hanning’)
xlabel(‘Frekuensi (Hz)’)
ylabel(‘|Y(f)|’);

wvtool(triang(L),hamming(L),hann(L));
% h=legend(‘Triangular’,’Hamming’,’Hanning’);
% set(h,’Interpreter’,’None’);

Berikut ini adalah plot dari masing-masing sinusoidal:

Dan ini adalah penggabungan dari ketiga sinusoidal tersebut:

Berikut ini adalah hasil FFT tanpa menggunakan jendela apapun dan panjang datanya 801, yang masing-masing terdiri dari spektrum tanpa jendela, spektrum dengan jendela Segitiga, Hamming, Hanning dan tampilan wvtool yang membandingkan ketiga jendela serta responnya: