TUGAS PEMROSESAN SINYAL DIGITAL Transformasi Fourier Diskrit dan Spektrum Sinyal Disusun oleh : Nama : Ryan Eko Saputro NIM : 12/331380/PA/14638 Nama : Adiya Riska Putra NIM : 12/331108/PA/14450 JURUSAN ILMU KOMPUTER DAN ELEKTRONIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS GADJAH MADA YOGYAKARTA 2015
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
TUGAS
PEMROSESAN SINYAL DIGITAL
Transformasi Fourier Diskrit dan Spektrum Sinyal
Disusun oleh :
Nama : Ryan Eko Saputro
NIM : 12/331380/PA/14638
Nama : Adiya Riska Putra
NIM : 12/331108/PA/14450
JURUSAN ILMU KOMPUTER DAN ELEKTRONIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS GADJAH MADA
YOGYAKARTA
2015
Pemrosesan Sinyal Digital 2015
2 Ryan Eko Saputro 12/331380/PA/14638
4.29. Membuat signal X dari penjumlahan 3 buah sinyal X1, X2, dan X3.
Diketahui signal X1, X2, dan X3 sebagai berikut:
x1 (t) = 5 cos[2П(500)t]
x2 (t) = 5 cos[2П(1200)t + 0.25 П]
x3 (t) = 5 cos[2П(1800)t + 0.5 П]
a. Membuat program matlab untuk melakukan sampling terhadap tiga buah signal di
atas dan membuat signal x(n) yang merupakan penjumlahan dari ketiga buah
gelombang. (x(n) = x1(n)+x2(n)+x3(n)).
Dari ketentuan, diketahui bahwa sampling rate yang digunakan adalah
8000Hz. Listing matlab:
Listing MatLab penjumlahan dari tiga sinyal
Kode Listing Penjabaran arti
kode listing
1 fs = 8000; inisialisasi suatu variabel fs
yang merepresentasikan
frekuensi sampling sebesar
8000Hz atau 8kHz
2 t=0:(1/fs):0.1; diinisialisasika suatu variabel t, dengan sampling dilakukan selama 0.1 detik dengan interval atau jeda periode sebesar 1/fs. Sehingga selama waktu sampling 0.1 detik, terdapat 8000 data.
3
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);
inisialisasi signal x1, x2, dan x3
4 x = x1+x2+x3; inisialisasi signal “x” yang merupakan suatu penjumlahan dari ketiga sinyal (x1, x2, dan x3)
Pemrosesan Sinyal Digital 2015
3 Ryan Eko Saputro 12/331380/PA/14638
Berikut merupakan sintaks plot gelombang x1, x2, x3 dan x selama 0,1 detik:
Listing plot sinyal dari penjumlahan tiga sinyal
1 %plot x1
figure(1);
plot(t,x1)
axis([0 0.1 -6 6])
title('Signal X1')
xlabel('time (s)')
ylabel('Amplitudo')
Memplot sinyal x1 pada waktu (t) di jendela atau figure 1
%plot x2
figure(2);
plot(t,x2)
axis([0 0.1 -6 6])
title('Signal X2')
xlabel('time (s)')
ylabel('Amplitudo')
Memplot sinyal x2 pada
waktu (t) di jendela atau
figure 2
%plot x3
figure(3);
plot(t,x3)
axis([0 0.1 -6 6 ])
title('Signal X3')
xlabel('time (s)')
ylabel('Amplitudo')
Memplot sinyal x3 pada waktu (t) di jendela atau figure 3
Pemrosesan Sinyal Digital 2015
4 Ryan Eko Saputro 12/331380/PA/14638
%plot x = x1+x2+x3%
figure(4);
plot(t,x)
axis([0 0.1 -16 16])
title('Signal X')
xlabel('time (s)')
ylabel('Amplitudo')
Memplot sinyal xyang berupa perpaduan atau penjumlahan dari ketiga sinyal (x1, x2, dan x3) pada waktu (t) di jendela atau figure 4
Output dari listing :
Gambar 1 : plot gelombang x1
Gambar 2 : plot gelombang x2
Pemrosesan Sinyal Digital 2015
5 Ryan Eko Saputro 12/331380/PA/14638
Gambar 3 : plot gelombang x3
Gambar 4 : plot signal x
Dari ketentuan mengenai gelombang dan pengamatan plot gelombang
terhadap gelombang x1, x2 , dan x3 dapat diketahui bahwa frekuensi gelombang
untuk x1 adalah 500Hz, frekuensi gelombang x2 adalah 1200Hz, dan frekuensi
gelombang untuk x3 adalah 1800Hz. Sehingga dapat disimpulkan bahwa gelombang
x dimana gelombang ini terbentuk dari penjumlahn ketiga gelombang x1, x2, dan x3
memiliki tiga buah komponen frekuensi yaitu 500Hz, 1200Hz, dan 1800Hz.
b. Melakukan plot spektrum signal gelombang x(n).
Gelombang x dapat dianalisis dengan menggunakan fast fourier transform.
Definisi transformasi fourier sebagai tool/alat untuk mengubah suatu sinyal dari
kawasan waktu ke kawasan frekuensi. Sinyal gelombang x (penjumlahan dari x1,x2,
Pemrosesan Sinyal Digital 2015
6 Ryan Eko Saputro 12/331380/PA/14638
dan x3) merupakan suatu sinyal yang menunjukkan ranah waktu maka, untuk dapat
menganalisis gelombang tersebut menjadi ranah frekuensi maka fast fourier
transform menjadi kunci pada pembahasan ini.
Untuk melakukan implementasi fast fourier transform dapat dilakukan dengan
fungsi fft() matlab. Berikut adalah implementasinya:
Listing implementasi fast fourier transform
1 Ak = abs(fft(x))/length(x); Pendefinisian nilai Ak. Ak akan menampung nilai magnitude signal spektrum dari gelombang x
2 fs=8000; Pendefinisian fs sebagai nilai sampling yang akan digunakan pada gelombang
3 k=0:1:length(x)-1; Pendefinisaian nilai k ( untuk membentuk indeks frekuensi )
4 f=k*fs/length(x); Pendefinisian f ( untuk mempersiapkan data sumbu x pada proses ploting )
5 figure(5);
plot(f(1:length(x)/2),Ak(1:length(x)/2));
title('Signal Spectrum')
xlabel('freq (Hz)')
ylabel('Absolut')
melakukan plot spektrum gelombang x pada jendela atau figure 5 dengan plot yang dibatasi setengah dari panjang f dan Ak
Pada baris pertama dapat dilihat bahwa untuk mencari nilai fast fourier
transform dari suatu gelombang dapat menggunakan fungsi fft. Selain itu pada
sintaks baris pertama, dilakukan operasi absolut nilai fft. Hal ini dilakukan karena
kita ketahui bersama bahwa hasil operasi fast fourier transform merupakan suatu
bilangan kompleks dimana nilai operasi mengandung bagian real dan imajiner.
Dengan demikian hasil fast fourier transform perlu dilakukan operasi absolut untuk
menemukan nilai absolutnya. Selain itu hasil operasi absolut fft dari gelombang x
dibagi dengan panjang data gelombang x, hal ini bertujuan untuk mempersiapkan
Pemrosesan Sinyal Digital 2015
7 Ryan Eko Saputro 12/331380/PA/14638
data pada proses plotting. Baris – baris selanjutnya adalah untuk menentukan plot
dengan berdasarkan pada f (indeks frekuensi ) dan Ak (data sumbu x) dan dicetak
pada figure 5.
Gambar 5: spektrum gelombang x
Gelombang x (Gambar 5) tersusun dari 3 buah frekuensi gelombang yaitu
frekuensi 500Hz, 1200Hz, dan 1800Hz, dengan magnitude masing masing frekuensi
ditunjukan sebagai berikut:
Gambar 6: spektrum gelombang x
Pemrosesan Sinyal Digital 2015
8 Ryan Eko Saputro 12/331380/PA/14638
4.30. Implementasi fungsi jendela untuk mencuplik spektrum signal.
a. Membuat gelombang x yang merupakan penjumlahan sinusoid gelombang x1, x2,
dan x3, dengan pencuplikan 240 data, dari 1-241.
Gelombang x dicuplik 240 data, maka pada program matlab didefinisikan
variabel x_sam. Variabel x_sam merupakan variabel samping dari gelombang x
dengan 240 data. Berikut adalah implemetasi sintaks pada matlab:
Listing Pencuplikan 240 data
1 fs = 8000; inisialisasi suatu variabel fs yang merepresentasikan frekuensi sampling sebesar 8000Hz atau 8kHz
2 t=0:(1/fs):0.1; diinisialisasika suatu variabel t, dengan sampling dilakukan selama 0.1 detik dengan interval atau jeda periode sebesar 1/fs. Sehingga selama waktu sampling 0.1 detik, terdapat 8000 data.
3 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);
inisialisasi signal x1, x2, dan x3
4 x = x1+x2+x3; inisialisasi signal “x” yang merupakan suatu penjumlahan dari ketiga sinyal (x1, x2, dan x3)
5 x_sam = x(1:241); Mendefinisikan x_sam dengan pencuplikan dari sinyal x sebanyal 240 data sampling.
6 figure(6);
plot(t(1:241),x_sam)
axis([0 0.1 -6 6])
title('Signal X with 240 data
sampling')
xlabel('time (s)')
ylabel('Amplitudo')
Memplot sinyal x_sam di jendela atau figure 6
Pemrosesan Sinyal Digital 2015
9 Ryan Eko Saputro 12/331380/PA/14638
Berikut adalah plot gelombang x dengan 240 data saja:
Gambar 6: gelombang x dengan 240 data
b. Melakukan plot spektrum gelombang x dengan fungsi jendela matlab
Jendela pada plot spektrum berfungsi untuk membatasi atau mencuplik
spektrum dan meminimalisir adanya kebocoran spektrum. Berikut adalah
implementasi windowing pada matlab.
Rectangular window (tanpa jendela)
Rectangular window (tanpa jendela) sama seperti plot spektrum dari suatu
gelombang pada umumnya. implementasi plot spektrum gelombang x
dengan 240 data dengan cara biasa :
Rectangular Window
1 A = abs(fft(x_sam))/length(x_sam); Pendefinisian nilai A. A akan menampung nilai magnitude signal spektrum dari gelombang x_sam
fs=8000; Pendefinisian fs sebagai nilai sampling yang akan digunakan pada gelombang
k=0:1:length(x_sam)-1; Pendefinisaian nilai k ( untuk membentuk indeks frekuensi )
Pemrosesan Sinyal Digital 2015
10 Ryan Eko Saputro 12/331380/PA/14638
f=k*fs/length(x_sam); Pendefinisian f ( untuk mempersiapkan data sumbu x pada proses ploting )
figure(7)
plot(f(1:241/2),A(1:241/2));
title('Signal Spectrum with 240 data
of signal X')
xlabel('freq (Hz)')
ylabel('Absolut')
melakukan plot spektrum gelombang x_sam dengan sinyal spectrum 240 data pada jendela atau figure 7 dengan plot yang dibatasi setengah dari panjang f dan Ak
Gambar 7: plot spektrum gelombang x_sam (240 data) dengan cara biasa
Bila diimplementasikan dengan fungsi rectangular windowing pada matlab,
maka sintaks pemrogrammanya adalah sebagai berikut:
Rectangular Window
1 L = length(x_sam); Mendefinisaikan L sebagai panjang dari sinyal x_sam
2 x_Rect = x_sam .* rectwin(L)'; Mendefinisaikan x_Rect sebagai sintaks dari penggunaan rectangle window dengan sinyal x_sam yang akan
Pemrosesan Sinyal Digital 2015
11 Ryan Eko Saputro 12/331380/PA/14638
diaplikasikan ke rectangle window
3 A = abs(fft(x_Rect))/length(x_Rect); Pendefinisian nilai A. A akan menampung nilai magnitude signal spektrum dari gelombang x_Rect
4 fs=8000; Pendefinisian fs sebagai nilai sampling yang akan digunakan pada gelombang
5 k=0:1:length(x_Rect)-1; Pendefinisaian nilai k ( untuk membentuk indeks frekuensi ) pada sinyal x_Rect
6 f=k*fs/length(x_Rect); Pendefinisian f ( untuk mempersiapkan data sumbu x pada proses ploting ) pada sinyal x_Rect
7 figure(13);
plot(f(1:length(x_Rect)/2),A(1:length(
x_Rect)/2));
title('Rectangular Windowing
(Frekuensi domain)')
xlabel('freq (Hz)')
ylabel('Absolut')
melakukan plot spektrum gelombang x_Rect pada jendela atau figure 13 dengan plot yang dibatasi setengah dari panjang f dan Ak
Berikut adalah plot spektrum frekuensi gelombang x dengan 240 data:
Gambar 8: plot spektrum gelombang x_sam (240 data) dengan fungsi
rectangular windowing
Pemrosesan Sinyal Digital 2015
12 Ryan Eko Saputro 12/331380/PA/14638
Gambar 7 dan gambar 8, dapat disimpulkan bahwa kedua metode diatas
menghasilkan hasil yang sama. Sehingga baik metode plot spektrum
frekuensi biasa dan penggunaan rectangular windowing menghasilkan hasil
yang sama.
Triangular window
implementasi triangular windowing gelombang x_sam (240 data) pada
matlab adalah sebagai berikut:
Triangular Window
1 L = length(x_sam); Mendefinisaikan L sebagai panjang dari sinyal x_sam
2 x_tri = x_sam .* triang(L)'; Mendefinisaikan x_tri sebagai sintaks dari penggunaan triangular window dengan sinyal x_sam yang akan diaplikasikan ke triangular window
3 figure(7);
plot(t(1:241),x_tri)
title('Triangular Windowing (time
domain)')
xlabel('time (s)')
ylabel('Amplitudo')
melakukan plot spektrum gelombang x_tri pada jendela atau figure 7 dengan plot yang dibatasi setengah dari panjang f dan Ak (masih pada ranah waktu)
4
A = abs(fft(x_tri))/length(x_tri);
Pendefinisian nilai A. A akan menampung nilai magnitude signal spektrum dari gelombang x_tri
5 fs=8000; Pendefinisian fs sebagai nilai sampling yang akan digunakan pada gelombang
6 k=0:1:length(x_tri)-1; Pendefinisaian nilai k ( untuk membentuk indeks frekuensi ) pada sinyal x_tri
7 f=k*fs/length(x_tri); Pendefinisian f ( untuk mempersiapkan data
Pemrosesan Sinyal Digital 2015
13 Ryan Eko Saputro 12/331380/PA/14638
sumbu x pada proses ploting ) pada sinyal x_tri
8 figure(11);
plot(f(1:length(x_tri)/2),A(1:length(x_t
ri)/2));
title('Triangular Windowing (Frekuensi
domain)')
xlabel('freq (Hz)')
melakukan plot spektrum gelombang x_tri pada jendela atau figure 11 dengan plot yang dibatasi setengah dari panjang f dan Ak (pada ranah frekuensi)
Berikut adalah plot time domain dan frekuensi domain gelombang x_sam
(240 data) dengan triangular windowing:
Gambar 9: plot gelombang x_sam (240 data) dengan fungsi triangular
windowing
Pemrosesan Sinyal Digital 2015
14 Ryan Eko Saputro 12/331380/PA/14638
Gambar 10: plot spektrum gelombang x_sam (240 data) dengan fungsi
triangular windowing
Hamming window
Implementasi Hamming windowing gelombang x_sam (240 data) pada
matlab adalah sebagai berikut:
Hamming Window
1 L = length(x_sam); Mendefinisaikan L sebagai panjang dari sinyal x_sam
2 x_Ham = x_sam .* hamming(L)'; Mendefinisaikan x_Ham sebagai sintaks dari penggunaan Hamming window dengan sinyal x_sam yang akan diaplikasikan ke Hamming window
3 figure(8);
plot(t(1:241),x_Ham)
title('Hamming Windowing (time domain)')
xlabel('time (s)')
ylabel('Amplitudo')
melakukan plot spektrum gelombang x_Ham pada jendela atau figure 8 dengan plot yang dibatasi setengah dari panjang f dan Ak (masih pada ranah waktu)
4 A = abs(fft(x_Ham))/length(x_Ham); Pendefinisian nilai A. A akan menampung nilai magnitude signal spektrum dari gelombang x_Ham
Pemrosesan Sinyal Digital 2015
15 Ryan Eko Saputro 12/331380/PA/14638
5 fs=8000; Pendefinisian fs sebagai nilai sampling yang akan digunakan pada gelombang
6 k=0:1:length(x_Ham)-1; Pendefinisaian nilai k ( untuk membentuk indeks frekuensi ) pada sinyal x_Ham
7 f=k*fs/length(x_Ham); Pendefinisian f ( untuk mempersiapkan data sumbu x pada proses ploting ) pada sinyal x_Ham
8 figure(12);
plot(f(1:length(x_Ham)/2),A(1:length(x_Ha
m)/2));
title('Hamming Windowing (Frekuensi
domain)')
xlabel('freq (Hz)')
melakukan plot spektrum gelombang x_Ham pada jendela atau figure 12 dengan plot yang dibatasi setengah dari panjang f dan Ak (pada ranah frekuensi)
Berikut adalah plot time domain dan frekuensi domain gelombang x_sam
(240 data) dengan hamming windowing:
Gambar 11: plot gelombang x_sam (240 data) dengan fungsi triangular windowing
Pemrosesan Sinyal Digital 2015
16 Ryan Eko Saputro 12/331380/PA/14638
Gambar 12: plot spektrum gelombang x_sam (240 data) dengan fungsi
hamming windowing
c. Dampak penggunaan jendela / window pada plot spektrum matlab
Spektrum gelombang tanpa adanya implementasi jendela akan kurang
sempurna. Jika ketidak sempurnan ini terlalu besar, maka akan sulit membedakan
dua buah frekuensi berbeda sebagai penyususn gelombang dalam plot spektrum
frekuensi.
Fast fourier transform akan sangat baik dan optimal jika data gelombang yang
dianalisis berada pada kelipatan 2n. Jika tidak pada kisaran 2
n, maka akan
ditambahkan suatu nilai nol (0) atau zero padding untuk mendekatkan jumlah data
gelombang yang hendak dianalisis pada kelipatan 2n. Zero padding akan
mengakibatan kebocoran spektrum, dimana frekuensi riak akan muncul. Frekuensi
riak adalah frekuensi diluar frekuensi penyusun gelombang yang mucul dan
mengganggu plot spektrum, sehingga spektrum frekuensi sulit dibedakan. Untuk
meminmalisis dampak penambahan zero padding, maka dapat digunakan teknik
jendela atau windowing. Dengan tekni jendela ini, suatu gelombang akan dicuplik
pada rentang tertentu sehingga akan menekan dampak zero padding.
Dari hasil pengujian dengan jendela rectangular, triangular, dan hamming, hasil
optimal didapatkan dengan teknik hamming. Hal ini dapat dilihat bahwa frekuensi
riak pada rentang 500Hz, 1200Hz dan 1800Hz dapat diminimalisisr dengan