Anda di halaman 1dari 56

MODUL PRAKTIKUM

ELEKTRONIKA DAN PEMROSESAN


SINYAL

LABORATORIUM
MIPA MAHASISWA PSRE
UNIVERSITAS LAMBUNG MANGKURAT
MODUL I
DIODA
MODUL 2
CATU DAYA
MODUL 3
TRANSISTOR BIPOLAR
MODUL 4

JFET (Junction Field Effect Transistor)


MODUL 5
OPERASIONAL AMPLIFIER

5.1.
TUJUAN PERCOBAAN

5.2. DASAR TEORI

5.3. ALAT-ALAT YANG DIGUNAKAN

5.4. PROSEDUR PERCOBAAN

5.5. TUGAS AWAL


5.6. T

UGAS AKHIR

A
FTAR PUSTAKA
MODUL 6
OPERASI DASAR PENGOLAHAN SINYAL PADA DSP

1.1 TUJUAN PRAKTIKUM


1. Mahasiswa mampu mengoperasikan Matlab dan
memanfaatkannya sebagai perangkat simulasi untuk praktikum
Pengolahan Sinyal Digital.
2. Mahasiswa dapat membangkitkan beberapa jenis sinyal dasar
yang banyak digunakan dalam Pengolahan Sinyal Digital.
3. Mahasiswa mampu melakukan operasi dasar pada sinyal dan memahami
aplikasinya.

1.2 DASAR TEORI


MATLAB merupakan akronim dari Matrix Laboratory, adalah
sebuah bahasa dengan kinerja tinggi untuk komputasi masalah teknik.
MATLAB mengintegrasikan komputasi, visualisasi, dan pemrograman
dalam suatu model yang sangat mudah untuk pakai dimana masalah-
masalah dan penyelesaiannya diekspresikan dalam notasi matematika
yang familiar. Penggunaan MATLAB meliputi bidang–bidang :
a. Matematika dan komputasi
b. Pembentukan algoritma
c. Akusisi data
d. Pemodelan, simulasi, dan pembuatan prototipe
e. Analisa data, eksplorasi, dan visualisasi
f. Grafik keilmuan dan
bidang rekayasa (Tri Budi Santoso,
2006).
MATLAB memungkinkan kita untuk memecahkan banyak
masalah teknis yang terkait dengan komputasi, khususnya yang
berhubungan dengan matrix dan formulasi vektor, yang mana masalah
tersebut merupakan momok apabila kita harus menyelesaikannya dengan
menggunakan bahasa level rendah seperti Pascal, C dan Basic. Dalam
lingkungan perguruan tinggi teknik, MATLAB merupakan perangkat
standar untuk memperkenalkan dan mengembangkan penyajian materi
matematika, rekayasa dan kelimuan. Dalam industri, MATLAB
merupakan perangkat pilihan untuk penelitian dengan produktifitas yang
tingi, pengembangan dan analisisnya (Tri Budi Santoso, 2006).
Fitur MATLAB yang dapat dimanfaatkan untuk beberapa
penggunaan dikemas dalam bentuk toolbox. Toolbox sangat penting
untuk mendukung pembelajaran dan pemahaman masalah yang sedang
dipelajari. MATLAB memiliki beberapa toolbox yang merupakan
kumpulan dari fungsi-fungsi MATLAB (M-files). Area-area yang sudah
bisa dipecahkan dengan toolbox saat ini meliputi pengolahan sinyal,
sistem kontrol, neural networks, fuzzy logic, wavelets, telekomunikasi,
finansial dan lain-lain (Tri Budi Santoso, 2006).

1.2.1 Kelengkapan pada Sistem MATLAB


Sebagai sebuah sistem, MATLAB tersusun dari 5 bagian utama:
a. Development Environment
Merupakan sekumpulan perangkat dan fasilitas yang membantu
Anda untuk menggunakan fungsi-fungsi dan file-file MATLAB.
Beberapa perangkat ini merupakan sebuah graphical user interfaces
(GUI). Termasuk di dalamnya adalah MATLAB desktop dan Command
Window, command history, sebuah editor dan debugger, dan browsers
untuk melihat help, workspace, files, dan search path.
b. MATLAB Mathematical Function Library
Merupakan sekumpulan algoritma komputasi mulai dari fungsi-fungsi dasar
sepertri: sum, sin, cos, dan complex arithmetic,sampai dengan fungsi-fungsi yang
lebih kompek seperti matrix inverse, matrix eigenvalues, Bessel functions, dan
Fast Fourier Transforms.

c. MATLAB Language
Merupakan suatu high-level matrix/array language dengan control
flow statements, functions, data structures, input/output, dan fitur-fitur
object-oriented programming.
d. Graphics
MATLAB memiliki fasilitas untuk menampilkan vector dan matriks
sebagai suatu grafik. Di dalamnya melibatkan high-level functions
(fungsi-fungsi level tinggi) untuk visualisasi data dua dimensi dan data
tiga dimensi, image processing, animation, dan presentation graphics
e. MATLAB Application Program Interface (API)
Merupakan suatu library yang memungkinkan program yang telah
Anda tulis dalam bahasa C dan Fortran mampu berinterakasi dengan
MATLAB. (Tri Budi Santoso, 2006).
1.2.2 Definisi DSP

DSP merupakan kepanjangan dari Digital Signal Processing


(Pengolahan Sinyal Digital). Dalam konteks hardware yang digunakan,
DSP juga dapat diartikan sebagai Digital Signal Processor. Digital
Signal Processor adalah rangkaian terintergasi seperti mikroprosesor,
tetapi arsitekturnya dioptimasi untuk melakukan pemrosesan data diskrit
dengan kecepatan tinggi seperti prsoes filtering dan transformasi Fourier.
Secara software, langkah pengoptimasian ini dilakukan pada algoritma
yang menyusunnya.
Beberapa aplikasi sistem DSP adalah telepon seluler, modem,
videophone, sistem grafis 3-D, sistem sonar, radar, radiologi,
penginderaan jauh, pengkodean suara, dan pengenalan pola (sidik jari,
retina, dan suara).

Gambar 1. Sistem kerja DSP

1.2.3 Bagaimana DSP bekerja?

Untuk dapat menjelaskan bagaimana DSP bekerja, Anda harus


membedakan dahulu antara sinyal analog dan sinyal digital. Sinyal
analog meliputi semua variabel fisis yang dapat diindera, seperti
intensitas bunyi, tekanan, intensitas cahaya, panas, dan sebagainya, yang
berwujud kontinyu. Masing-masing indera kita dapat membedakan
sinyal-sinyal analog tersebut. Ketika indera kita menerima sinyal, sensor
organ tubuh mengubahnya menjadi sinyal listrik dan dikirimkan ke
komputer analog (otak) melalui syaraf. Sinyal digital merupakan data
yang dikirimkan di dalam komputer digital, yang mana informasinya
diwakili oleh keadaan diskrit – sebagai contoh level tegangan tinggi dan
rendah (high dan low) – bukan merupakan variabel kontinyu
sebagaimana sinyal analog.
Teknologi digital membantu kita dalam banyak hal : menulis
dokumen, pencetakan gambar, pengenalan karakter, dan lain-lain.
Namun karena sinyal yang terdapat di dunia ini adalah analog, untuk
memprosesnya dengan teknologi digital diperlukan tahapan pada gambar
2 sebagaimana dijelaskan berikut :
a. Mengubah sinyal analog menjadi sinyal sinyal listrik menggunakan
transduser (seperti microphone).
b. Mengubah sinyal listrik tersebut menjadi sinyal digital menggunakan ADC.
c. Setelah sinyal dalam bentuk digital, sistem DSP mengolah informasi
yang terkandung di dalam sinyal tersebut, misalnya informasi pada
sinyal suara dapat berupa kata yang diucapkan,.
d. Setelah DSP memproses sinyal, output sinyal dikonversi kembali
ke bentuk analog agar kita dapat merasakannya, misalnya suara
yang lebih jernih.

1.2.4 Dasar Pemrosesan Sinyal


Dasar pemprosesan sinyal meliputi pergeseran (shift), percerminan
(folding/reflection), dan aritmatika (penambahan - addition, dan perkalian -
product, scalling).
1. Shift/Delay
Suatu sinyal dapat digeser waktunya dengan mengganti variable
n dengan n – k, dengan k adalah bilang bulat yang menyatakan unit
waktu pergeseran. Jika k bernilai positif maka pergeseran akan
menghasilkan sinyal yang tertunda (delay). Dalam grafik hal ini
ditunjukkan dengan menggeser ke kanan sejauh k. Jika k bernilai negatif
maka sinyal akan lebih cepat sebesar |k| (digeser ke kiri sebesar |k|).
2. Folding/Reflection
Folding/reflection merupakan operasi ini akan pencerminan
sinyal x(n) menjadi sinyal x(–n). Refleksi atau pencerminan umumnya
digunakan saat pengolahan sinyal konvolusi diskrit.
3. Addition
Proses penjumlahan sinyal seringkali terjadi pada peristiwa transmisi
sinyal melalui suatu medium. Sinyal yang dikirimkan oleh pemancar setelah
melewati medium tertentu misalnya udara akan mendapat pengaruh kanal, dapat
menaikkan level tegangan atau menurunkan level tegangannya tergantung
komponen yang dijumlahkan. Sehingga pada bagian penerima akan mendapatkan
sinyal sebagai hasil penjumlahan sinyal asli dari pemancar dengan sinyal yang
terdapat pada kanal tersebut. Secara matematis:
y(n) = x1(n) + x2(n) ...(1)
4. Product
Perkalian merupakan bentuk operasi yang sering dijumpai dalam
kondisi real. Pada rangkaian mixer, rangkaian product modulator dan
frequency multiplier, operasi perkalian merupakan bentuk standar yang
seringkali dijumpai. Didefinisikan melalui persamaan berikut:
y(n) = x1 (n) x2 (n) ...(2)
5. Scaling
Scalling merupakan operasi perkalian suatu sinyal dengan suatu
konstanta A. Secara matematis :
y(n) = Ax(n) ) ...(3)
Perkalian sinyal dengan konstanta biasanya diterapkan dalam
penguatan (amplifikasi) dan pelemahan (atenuasi) sinyal. Penguatan dan
pelemahan sinyal bergantung dari nilai
A. Jika nilai A≥1, maka sinyal akan dikuatkan dan jika A<1 maka sinyal
akan dilemahkan.
Peristiwa penguatan sinyal seringkali kita jumpai pada perangkat audio
seperti radio, tape, dan sebagainya. Fenomena ini dapat juga direpresentasikan
secara sederhana

sebagai sebuah operasi matematika sebagai berikut :


y(t) = amp x ( t ) ) ...(4)
dimana:
y(t) = sinyal output
amp = konstanta
penguatan (≥1) x(t)
= sinyal input
Peristiwa pelemahan sinyal sering muncul pada sistem transmisi.
Apabila sebuah sinyal dilewatkan suatu medium seringkali mengalami
berbagai perlakuan dari medium (kanal) yang dilaluinya. Ada satu
mekanisme dimana sinyal yang melewati suatu medium mengalami
pelemahan energi yang selanjutnya dikenal sebagai atenuasi (pelemahan
atau redaman) sinyal. Dalam bentuk operasi matematik sebagai
pendekatannya, peristiwa ini dapat diberikan sebagai berikut
(Peranginangin, 2006).
y(t) = att x(t) ) ...(5)
dimana :
y(t) = sinyal output
att = konstanta
atenuasi (<1) x(t)
= sinyal input
Munculnya konstanta pelemahan ini dihasilkan oleh berbagai proses
yang cukup komplek dalam suatu media transmisi.
1.3 PERANGKAT YANG DIPERLUKAN
1. PC yang dilengkapi dengan perangkat multimedia (Sound card, Microphone,
Speaker
aktif, atau headset).
2. Sistem Operasi Windows dan Perangkat Lunak Matlab yang dilengkapi
dengan tool box DSP.

1.4 PROSEDUR KERJA


1.4.1 Memulai Perintah Sederhana
1. Menentukan variabel skalar dengan cara mengetik seperti berikut pada
command window:
»x = 2 (tekan “Enter”)
»y = 3 (tekan “Enter”)
» z = x + y(tekan “Enter”)

2. Mendefinisikan dua buah vektor, yaitu vector x dan vector y, dengan cara
melakukan mengetikan seperti berikut:
» x = [1 2 3] (tekan “Enter”)
» y = [4 5 6] (tekan “Enter”)

» y(1) (tekan “Enter”)

3. Mengkombinasikan dua vektor. MATLAB menggunakan integer positif


untuk indeks array. Elemen pertama adalah y(1), elemen kedua adalah y(2),
dan seterusnya. Nol atau bilangan negatif tidak diperbolehkan untuk indek
array. Sekarang kita jumlahkan keduanya:
» x+y (tekan “Enter”)dan sekarang hitung inner productnya :
» x*y' (tekan “Enter”)

Jawabannya adalah 1*4 + 2*5 + 3*6 = 32! Catat, bahwa y' adalah transpose
pada y dan merupakan suatu vektor kolom. Untuk memeriksanya, ketikkan
perintah berikut:
>> y' (tekan “Enter”)

Cara lain pada pengkombinasian dua vector adalah diakukan melalui


perkalian element- demi-element:
>> x.*y (tekan “Enter”)

4. Sekarang kita mendefinisikan suatu matriks:


»A=[123 4 5

789];
Catat bahwa matrik tidak diulang kalau kita menggunakan semi colon. Kita
sekarang mengalikan matrik A dengan transpose dari x.
» A*x' (tekan “Enter”)

Bagaimana hasilnya?

5. Kita juga dapat melakukan operasi aritmatika di antara beberapa matriks.


» B=[1234

5 6 78
7 6 5 4];
» A*B (tekan “Enter”)

» A+B (tekan “Enter”)

Bagaimana hasilnya? Bila operasi tidak bisa dilakukan, berikan


penjelasan dan lakukan yang harus dilakukan agar operasi dapat
berlangsung!

6. Sekarang kita akan mendefinisikan matriks vektor. Sebagai contoh suatu


matriks nol dan matriks satu dengan dimensi 3 baris dan 6 kolom dapat
dinyatakan sebagai :
» zeros(3,6)

» ones(3,6)

Bagaimana hasilnya?

1.4.2 Mendefinisikan vektor-vektor besar


1. Membangkitkan vektor 1 kali 100 yang menyusun sample pada sinyal cosinus.
» x = cos(0.1*pi*(0:99));

2. Membangkitkan suatu "ramp" dari 1 sampai 50:


» x = [1:1:50];

Bilangan kedua mengindikasikan step kenaikan dari dari 1 sampai 50.


Ketika Anda tidak memasukkan angka kedua pada perintah diatas, maka
secara otomatis (default) step kenaikan ditetapkan bernilai “1”:
» x = [1:50];Anda bisa juga secara khusus mendefinisikan suatu
rentang nilai pada x sebagai berikut :
» x(51:100) = [50:-1:1]

Ini merupakan metode yang sangat bermanfaat untuk menspesifikasikan


nilai “waktu” untuk penggambaran grafik. Sebagai contoh, ditetapkan
interval sampling dalam contoh di atas adalah 1 detik. Selanjutnya Anda
dapat mendefinisikannya seperti berikut :
» time = [0:0.001:0.099];
1.4.3 Penggambaran Grafik

Salah satu kelebihan dari Matlab adalah kemudahan dalam


menampilkan visualisasi pengolahan data. Visualisasi ini dimaksudkan
agar Anda kesulitan untuk melihat suatu respon sistem. Beberapa cara
visualisasi yang dapat ditampilkan oleh MATLAB adalah grafik,
periodogram, spektrogram, histogram, dan lain-lain. Pada bagian ini,
Anda akan mempelajari cara penggambaran grafik dari suatu fungsi,
serta sinyal kontinu maupun diskrit. Penggambaran grafik menuntuk
keterampilan menuliskan vektor-vektor besar untuk menyatakan
parameter-parameter yang ingin ditampilkan. Untuk memudahkan Anda
memahami script programnya, perhatikan lagi langkah 1.4.2.
1. Menampilkan sinyal dalam domain waktu.
%Coba_1.m

time = [0:0.001:0.099]; x =

cos(0.1*pi*(0:99));
plot(time,x)
xlabel('time(msec)') ,

ylabel('x(t)')

Bagaimana hasilnya ?

2. Menampilkan sinyal waktu diskrit. Tambahakn script berikut di bawah


listing progam no. 1
stem(time,x)

xlabel('time(msec)') , ylabel('x(t)’)

Bagaimana hasilnya?

3. Cobalah untuk membuat program seperti berikut ini pada M-Editor, dan
jangan lupa Anda simpan dengan nama coba_2
%Coba_2.m

x(1:52) = [0 0 1:1:50];

x(53:102) = [50:-1:1];

h = [1 2];

for n =
3:101,
y(n) =
0;

for m = 1:2,

y(n) = y(n) +
h(m)*x(n-m); end
endplot(y)

Bagaimana hasilnya?
Dalam hal ini, Anda harus memahami arti perintah-perintah tersebut.
Anda dapat mencari fungsi perintah-perintah tersebut di menu “help”
atau tekan F1.

4. Coba ketik program berikut!


%Coba_3.m
figure('Name','coba
_3'); n=201;
delx=10/(n-1);

for k=1:n x(k)=(k-


1)*delx;
y(k)=sin(x(k))
*exp(-
0.4*x(k));

end %plot(x,y)
plot(x,y,'linewidt
h',4)
title('Grafik yang
pertama')
xlabel('x');ylabel
('y'); Bagaimana
hasilnya?

1.4.4 Pembangkitan Sinyal

Pembangkitan sinyal merupakan dasar bagi seluruh aktifitas


pengolahan sinyal. Terdapat beberapa jenis sinyal, di antaranya sinyal
sinusoida, sinyal persegi, sinyal segitiga, sinyal waktu kontinyu dan
diskrit. Pembangkitan sinyal dapat dilakukan secara off-line
(dibangkitkan oleh program) maupun on-line (dalam bentuk file audio,
dengan format yang didukung MATLAB meliputi *.wav, *.au, *.dat).

1.4.1.1 Pembangkitan Sinyal Waktu Kontinyu Sinusoidal


1. Ketikkan script program berikut !
Fs=100; t=(1:100)/Fs;

s1=sin(2*pi*t*5); plot(t,s1)
Sinyal yang dibangkitkan adalah sebuah sinus dengan amplitudo Amp =
1, frekuensi f = 5Hz dan fase awal θ = 0. Diharapkan Anda sudah
memahami tiga parameter dasar pada sinyal sinus ini.
2. Lakukan perubahan pada nilai s1
: s1=sin(2*pi*t*10);
Perhatikan apa yang terjadi. Ulangi dengan mengganti angka 10 dengan 15,
dan 20. Perhatikan apa yang terjadi.

3. Edit kembali program Anda sehingga bentuknya persis seperti pada langkah
1, kemudian lanjutkan dengan melakukan perubahan pada nilai amplitudo,
sehingga bentuk perintah pada s1 menjadi:
s1=2*sin(2*pi*t*5);

Coba perhatikan apa yang terjadi? Lanjutkan dengan merubah nilai


amplitudo menjadi 4,5,6, … sampai 10. Apa pengaruh perubahan
amplitudo pada bentuk sinyal sinus?

4. Kembalikan program Anda sehingga menjadi seperti pada langkah pertama.


Sekarang coba Anda lakukan sedikit perubahan sehingga perintah pada s1
menjadi:
s1=2*sin(2*pi*t*5 + pi/2);

Coba Anda perhatikan, apa yang terjadi? Apa yang baru saja Anda
lakukan adalah merubah nilai fase awal sebuah sinyal dalam hal ini nilai
θ = π/ 2 = 90°. Sekarang lanjutkan langkah Anda dengan merubah nilai
fase awal menjadi 45°, 120°, 180°, dan 225°. Amati bentuk sinyal sinus
terbangkit, dan catat hasilnya.

1.4.1.2 Pembangkitan Sinyal Persegi


1. Buat sebuah file baru dan beri nama coba_kotak.m kemudian buat program
seperti berikut ini!
%Coba_Kot
ak.m
Fs=100;
t=(1:100)
/Fs;

s1=SQUARE(2*pi*5*
t);
plot(t,s1,'linewi
dth',2) axis([0 1
-1.2 1.2])

Apa yang Anda dapatkan?

2. Coba Anda lakukan satu perubahan dalam hal ini nilai frekuensinya Anda rubah
menjadi
10 Hz, 15 Hz, dan 20 Hz. Apa yang Anda dapatkan?

3. Kembalikan bentuk program menjadi seperti pada langkah pertama,


Sekarang coba Anda rubah nilai fase awal menjadi menjadi 45°, 120°, 180°,
dan 225°. Amati dan catat apa yang terjadi dengan sinyal persegi terbangkit.

1.4.1.3 Pembangkitan Sinyal Waktu Diskrit, Sekuen Konstan


Sebagai langkah awal kita mulai dengan membangkitkan sebuah sekuen unit
step.

Sesuai dengan namanya, unit step berarti nilainya adalah satu satuan.
1. Buat program baru dan Anda ketikkan perintah seperti berikut:
%Coba_Unit_Step.m

figure('Name',’Pembangkitan Sinyal Step Sekuen


Konstan’);
L=input('Panjang Gelombang (>=40)=' )
P=input('Panjang Sekuen =' )

for n=1:L if (n>=P)

step(
n)=1;
else

step(n)=0;end end x=1:L;

stem(x,step)

Bagaimana hasilnya?

2. Anda ulangi langkah pertama dengan cara me-run program Anda dan masukan
nilai untuk panjang gelombang dan panjang sekuen yang berbeda-beda. Catat apa
yang terjadi.

1.4.1.4 Pembangkitan Sinyal Waktu Diskrit, Sekuen Pulsa


1. Buat program baru dengan perintah berikut ini.
%Coba_Unit_Pulsa.m
figure('Name',’Pembangkitan Sinyal
Sekuen Pulsa); L=input('Panjang
Gelombang (>=40)=' )

P=input('Posisi Pulsa =' )


for n=1:L
if (n==P) step(n)=1;
else

step(n)=0;

end end x=1:L; stem(x,step

axis([0 L -.1 1.2])

Bagaimana hasilnya?

2. Jalankan program di atas berulang-ulang dengan catatan nilai L dan P


diubah-ubah sesuai kehendak Anda, perhatikan apa yang terjadi? Catat
apa yang Anda lihat

1.4.1.5 Pembentukan Sinyal Sinus Waktu Diskrit


1. Buat program baru dengan perintah seperti berikut.
%sin_dikrit1.m

figure('Name',’Sinyal sinus diskrit’);

Fs=20;%frekuensi
sampling t=(0:Fs-
1)/Fs;%proses
normalisasi
s1=sin(2*pi*t*2);
stem(t,s1)

axis([0 1 -1.2 1.2])

Bagaimana hasilnya?

2. Lakukan perubahan pada nilai Fs, sehingga bernilai 30, 40 dan 50. Catat
apa yang terjadi. Apakah perubahan yang nampak?Lakukan lagi perubahan
pada nilai Fs, sehingga bernilai 18, 15, dan 10. Catat apa yang terjadi.

1.4.1.6 Pembangkitan Sinyal Audio Dengan Memanfaatkan file


*.wav
Kita mulai bermain dengan file audio dengan format *.wav.
Dalam hal ini, kita melakukan pemanggilan sinyal audio yang ada
dalam harddisk kita. Langkah yang kita lakukan adalah sebagai
berikut:
1. Anda buat file audio_1.m seperti berikut :
% audio_1.m

y1=wavread('nama file
Anda.wav'); Fs=10000;
wavplay(y1,Fs,'async') % Memainkan audio sinyal asli

Bagaimana hasilnya?

2. Tampilkan file audio yang telah Anda panggil dalam bentuk grafik
sebagai fungsi waktu dengan mengetik script berikut di bawah program
di atas.
t=1:lengt
h(y1);
plot(t,y1
,'.')

title('Grafik Sinyal
Audio')
ylabel('Nilai')
xlabel('waktu
(detik)')

Perhatikan bentuk tampilan yang Anda lihat. Catat apa yang Anda dapat
dari hasil tersebut.

1.4.5 Operasi Dasar Sinyal

1.4.5.1 Pergeseran Sinyal


Pergeseran pada sinyal analog dapat dilihat pada pergeseran
sudut fase. Simulasinya sebenarnya telah Anda lakukan pada langkah
1.4.1.1 Untuk memudahkan dalam membandingkan sinyalnya, ketikkan
script berikut:
%Geser_continyu.
m Fs=100;
t=(1:100)/Fs;

s1=sin(2*pi*t*5); plot(t,s1,'g')
hold on

s1=2*sin(2*pi*t*5 + pi); plot(t,s1,'r')


legend('sinyal awal','sinyal digeser
sejauh pi')

Pada sinyal diskrit, pergeseran dilakukan pada titik sampelnya. Script berikut
untuk mengetahui pergeseran pada sinyal diskrit:
%Geser_d
iskrit.m
n=-
10:10;

u=[zeros(1,3),ones(1,7),zeros(1,11)];
subplot(21
1);
stem(n,u)

u=[zeros(1,5),ones(1,7),zeros(1,9)];
subplot(21
2);
stem(n,u)

Amati bagaimana hasilnya.


1.4.5.2 Pencerminan Sinyal
1. Bangkitkan sinyal kontinyu dengan script berikut :
%Cermin_co
ntinue.m
n=-
10:0.1:10;

u=sin(n*0.25+2);
subplot(3,1,1);
plot(n,u)

2. Ubah sinyal kontinyu pada langkah di atas ke dalam sinyal diskrit :


n=-10:0.75:10;

u=sin(n*0.25+2); % sebelum
dicerminkan (n) subplot(3,1,2);
stem(n,u)

3. Lakukan pencerminan terhadap sumbu y


u=sin(-n*0.25+2); % setelah dicerminkan (–n)

subplot(3,1,3); stem(n,u)

Bagaimana hasil yang Anda dapatkan ?

1.4.5.3 Penguatan Sinyal


1. Bangkitkan gelombang pertama dengan script program seperti langkah
1.4.1.1 no. 1. Tambahkan perintah ‘subplot(2,1,1)’ sebelum perintah
memplotkan grafik. Simpan program dengan nama Kuat_kontinyu.m

2. Lanjutkan dengan langkah berikut ini


a=input('nilai pengali yang anda gunakan (> 0): ');
s1_kuat=a*sin(2*pi*t);

subplot(2,
1,2)
plot(t,y1_
kuat)

Jangan lupa Anda masukkan sebuah nilai untuk ‘a’, misalnya 1.5 atau yang lain.
Apa yang Anda dapatkan? Apakah gambar seperti berikut? Nilai penguatan
sinyal seringkali dituliskan dalam dBell (dB). Untuk penguatan misalnya 1.5
kali, berapa nilainya dalam dB? Amati pula nilai penguatan untuk nilai a yang
lain yang Anda masukkan.

3. Ulangi langkah 1 dan 2, tetapi dengan nilai a berbeda misalnya 1.7, 2.5, 3.0
atau yang lain. Dan jangan lupa Anda simpan gambarnya dan buatlah
analisa dari apa yang Anda amati dari gambar tersebut? Jangan lupa dalam
setiap penggambaran Anda cantumkan nilai dB setiap percobaan.

1.4.5.4 Pelemahan Sinyal


Seperti yang kita ketahui bahwa pelemahan merupakan penguatan negatif,
atau dalam hal ini konstanta penguatan bernilai <1. Berdasar pemahaman ini coba
Anda susun sebuah program pelemahan sinyal dengan memanfaatkan
contoh program yang sudah Anda buat pada langkah 1.4.5.1 Simpan
program dengan nama Lemah_kontinyu.m

1.4.5.5 Penjumlahan Dua Sinyal


Operasi penjumlahan dua buah sinyal dapat dilakukan dengan mengikuti
langkah-

langkah berikut ini.


1. Buat sebuah program baru dengan script berikut :
T=100; t=0:1/T:2; f1=1;

y1=sin(2*
pi*t);
subplot(3
,1,1)
plot(t,y1
)

2. Bangkitkan gelombang kedua dengan langkah tambahan berikut ini:


f2=2;

pha2=pi/2;
y2=sin(2*pi*t+p
i);
subplot(3,1,2)
plot(t,y2)

3. Lakukan proses penjumlahan pada kedua sinyal y1 dan y2 di


atas dengan menambahkan script berikut :
y3=y1+y2;
subplot(3,
1,3)
plot(t,y3)

4. Coba Anda ubah nilai f2 menjadi 3, 4, 5,……10. Perhatikan apa yang terjadi
dan catat hasilnya.

5. Lakukan perubahan pada pha2 sehingga nilainya menjadi 0.1*pi,


0.25*pi, 0.5*pi, dan 1.5*pi. Apa yang Anda dapatkan dari langkah ini?

1.4.5.6 Perkalian Dua Sinyal

1. Bangkitkan gelombang pertama dan kedua dengan script seperti langkah


1.4.5.3 no. 1 dan 2.
2. Lakukan proses perkalian pada kedua sinyal y1 dan y2 diatas.
Programnya adalah seperti berikut :
y3=y1.*y2
;
subplot(3
,1,3)
plot(t,y3
)

4. Coba Anda rubah nilai f2 menjadi 3, 4, 5,……10. Apa yang terjadi? Catat hasilnya!
5. Lakukan perubahan pada pha2 sehingga nilainya menjadi 0.1*pi, 0.25*pi,
dan 1.5*pi. Apa yang Anda dapatkan dari langkah ini?

1.4.5.7 Penambahan Noise Gaussian pada Sinyal Audio


Mungkin Anda sudah bosan melakukan aktifitas dengan sesuatu
yang serba ideal teoritis dan serba serius. Sekaranglah saatnya Anda
belajar sambil menghibur diri. Tentu saja, dalam hal ini PC tempat Anda
bekerja harus dilengkapi dengan perangkat multimedia, minimal sound
card lengkap dengan speaker aktif.

Gambar 2. Operasi penjumlahan sinyal audio *.wav dengan noise

Baiklah, kita mulai dengan memanggil sebuah file audio3.wav.


Kalau dalam folder dimana Anda sekarang bekerja tidak ada file ini,
cobalah tanyakan ke asisten, atau bila Anda ingin dikatakan sebagai
orang yang kreatif, coba Anda cari file *.wav apa saja yang ada di PC
Anda, kopikan ke folder dimana MATLAB Anda bekerja.

1. Untuk contoh kasus ini ikuti langkah pertama dengan membuat file
coba_audio_3.m seperti berikut :
y1=wavread('ALARM
.WAV'); Fs=8000;

wavplay(y1,Fs,'sync') % memainkan sinyal asli

2. Tambahkan perintah berikut ini setelah langkah di atas. Perhatikan


beberapa perintah baru yang digunakan !
N=length(y1); % menghitung dimensi file wav
var = 0.1;

noise_1=var*randn(N,1); % membangkitkan white noise Gaussian


y_1n=y1 + noise_1; % menambahkan noise ke file
wavplay(y_1n,Fs1,'sync') % memainkan sinyal asli bernoise

3. Apakah Anda mendapat sesuatu yang baru dengan langkah Anda? Coba Anda lakukan
sekali lagi langkah 2 dengan nilai var 0.2, 0.4, 0.8, dst. Coba amati apa yang terjadi?

4. Coba Anda buat 3 buah grafik dalam fungsi waktu yang masing-masing menampilkan
sinyal dari file audio yang telah Anda panggil sebelum penambahan noise, sinyal noise
dan sinyal audio setelah penambahan noise (ingat cara menampilkan grafik pada
langkah sebelumnya!)
sinyal asli
1

-10 2000 4000 6000 8000 10000 12000 14000 16000 18000
white noise Gaussian, var=0.1
0.5

-0.50 2000 4000 6000 8000 10000 12000 14000 16000 18000
sinyal bernoise
1

-10 2000 4000 6000 8000 10000 12000 14000 16000 18000

Gambar 3. Contoh tampilan grafik untuk langkah nomor 4

1.4.5.8 Proses Penguatan pada Sinyal Audio


Sekarang kita lanjutkan permainan kita dengan file *.wav. Dalam hal ini
kita lakukan penguatan atau pelemahan sinyal audio yang telah kita panggil.
Langkah yang kita lakukan adalah seperti berikut.:
1. Bangkitkan sinyal audio seperti langkah 1.4.5.7 nomor 1!
2. Lakukan penambahan perintah seperti di bawah ini :
amp =1.5;
y2=amp*y1;
wavplay(y2,Fs,'async') % Memainkan audio sinyal setelah
penguatan

3. Apakah Anda mengamati sesuatu yang baru pada sinyal audio Anda? Kalau Anda
belum juga memahami, coba rubah nilai amp = 0.1, 0.2, 0.5, dst sampai nilainya 2.0.
(Ingat! Nilai amp > 1 berarti penguatan & amp < 1 berarti pelemahan).

4. Cobalah untuk menampilkan file audio yang telah Anda panggil dalam bentuk grafik
sebagai fungsi waktu, baik untuk sinyal asli atau setelah penguatan dan pelemahan.
Apa yang Anda dapatkan?

1.5 ANALISIS DATA


Anda telah melakukan berbagai langkah untuk percobaan pembangkitan sinyal, baik
diskrit maupun kontinyu dan Anda juga sudah mempelajari bagaimana membaca file
udio *.wav. Selanjutnya yang harus Anda lakukan adalah menjawab setiap
pertanyaan yang ada pada setiap langkah percobaan di atas dan tugas akhir.

1.6 TUGAS AWAL


1. Jelaskan jenis-jenis sinyal yang Anda ketahui dari materi kuliah atau referensi lain?
2. Apa yang dimaksud dengan noise? Jelaskan pembagian jenis noise yang dikenal
dalam DSP !
3. Jelaskan contoh salah satu aplikasi DSP pada bidang yang Anda ketahui.

1.7 TUGAS AKHIR


1. Dari contoh-contoh program yang sudah Anda jalankan, berikan penjelasan arti
setiap perintah terhadap output yang dihasilkannya !
2. Buat sebuah sinyal sinus dan simpan dalam format *.wav ! Untuk menyimpan dalam
format *.wav, gunakan perintah ‘wavwrite’ ! Aturan penulisan sintaksnya bisa Anda
lihat di menu ‘help’ MATLAB (atau tekan F1).
3. Buat rekaman suara (bisa suara Anda atau dari sumber lain), tambahkan white noise
Gaussian dan tampilkan grafik domain waktunya !

REFERENSI
- MacMahon, David. 2007. MATLAB Demystified. McGraw-Hill
- Peranginangin, Kasiman. 2006. Pengenalan Matlab. Penerbit Andi. Yogyakarta
- Santoso, Tri Budi dan Miftahul Huda. 2006. Modul Praktikum Sinyal dan Sistem
(Bagian 1&2).
MODUL 7
TRANSFORMASI FOURIER DAN SPEKTRUM SINYAL

1.1 TUJUAN PRAKTIKUM


1. Mahasiswa dapat memahami konsep dasar Discrete Fourier Transform (DFT) dan Fast
Fourier Transform (FFT) pada pengolahan sinyal.
2. Mahasiswa dapat memahami algoritma DFT/FFT untuk menghitung spektrum sinyal.
3. Mahasiswa dapat memahami penggunaan jendela (windowing) untuk mengurangi
kebocoran spektrum sinyal.
4. Mahasiswa dapat memahami implementasi penggunaan DFT/FFT pada pengolahan
sinyal digital.

1.2 DASAR TEORI


Dalam praktikum sebelumnya, kita telah belajar merepresentasikan suatu
sinyal dalam domain waktu, baik dalam mode kontinyu maupun diskrit. Namun
dalam pengolahan sinyal, bagian tersebut baru merupakan awal dari proses yang
menajdi inti pengolahan sinyal digital. Pada bagian ini, kita akan belajar cara
merepresentasikan sinyal dalam domain frekuensi.

1.2.1 Representasi Sinyal Dalam Domain Waktu dan Frekuensi

Pertama-tama, kita akan belajar mengetahui representasi sinyal dalam


domain waktu sekaligus frekuensinya melalui representasi spektral. Cara yang
paling populer ini adalah sound spectrogram yang merupakan suatu gambaran
grayscale yang merepresentasikan nilai frekuensi sinyal pada waktu tertentu. Mari
kita perhatikan gambar berikut:
Gambar 1.Bentuk spektrogram dan waveform ‘a-i-u-e-o’
Intensitas spektral pada suatu titik waktu ditunjukkan dengan tingkat
keabuan yang merupakan suatu bentuk analisis Short-time Fourier Trasnform
(SFT) dari sinyal wicara yang sedang diamati. Perhatikan Gambar 1 pada nilai t =
1,5 detik. Tampak bahwa banyak nilai frekuensi muncul pada bagian
spectrogram-nya sesuai dengan tampilan grafik domain waktu yang menunjukkan
simpangan gelombang pada waktu tersebut cukup tinggi dan beragam. Sedangkan
pada nilai t = 2,3 detik tampak spectrogram menunjukkan sedikit sekali warna
biru, yang menunjukkan komponen frekuensi yang muncul sangat sedikit, ini
sesuai dengan bentuk gelombang dalam domain waktu yang hampir tidak ada
sinyal.

1.2.2 Discrete Fourier Transform


Salah satu cara mentransformasi sinyal dari domain waktu ke dalam
domain frekuensi adalah dengan meggunakan Discrete Fourier Transform (DFT).
2
X[ k] =∑ =0

...(1)
−1 − ( )

[]
Persamaan (1) di atas menyatakan bahwa sinyal akan periodik pada setiap nilai N.
Implementasi DFT dapat diujudkan dengan sebuah Bank Filter seperti Gambar 2
berikut ini :

Gambar 2. Blok diagram sistem Bank Filter Spectrum Analyzer untuk menghitung DFT

Untuk mengoptimalkan proses komputasi, DFT bisa dimodifikasi dengan algoritma


yang seringkali kita kenal sebagai Fast Fourier Transform (FFT). Dengan FFT, proses
komputasi bisa direduksi dari N2 menjadi N log2 N. Misalnya dengan menggunakan DFT, kita
akan melakukan transformasi sebanyak N=1024 titik, maka kita memerlukan

perkalian sebanyak N2 = 1.048.567. Sedangkan dengan menggunakan FFT,


perkalian yang diperlukan sebanyak N log2 N = 5120 perkalian.
Sebuah contoh hasil penmggunakan algoritma FFT untuk sistem yang
lebih kompleks adalah untuk mengolah sinyal wicara. Pada gambar 3 ditunjukkan
sebuah hasil proses FFT untuk kalimat ‘a-i-u-e-o’.
Gambar 3. Spektrum Frekuensi kalimat ‘a-i-u-e-‘
1.2.3 Spektrum Sinyal

Salah satu aplikasi DFT adalah mengetahui spektrum sinyal dengan


panjang terbatas ke dalam domain frekuensi. Gambar 4 menunjukkan hasil
perhitungan spektrum amplitudo dan spektrum daya menggunakan koefisien
DFT. Pertama-tama, kita memasukkan satu deret sinyal x(n) yang disampling
sepanjang T0 = NT, di mana T adalah periode sampling dan N jumlah point data.

Gambar 4. Aplikasi DFT dalam Perhitungan Spektrum Sinyal


Untuk sejumlah deret tersampling x(n) dalam range n = 0, 1, 2 ..., N-1, kita dapat:
x(0), x(1), x(2) ... x(N-1) ...(2)

Selanjutnya, kita mengaplikasikan DFT pda deret x(n) untuk mendapat koefisien
DFT sejumlah N:

X(k) = ∑ =0−1 ( )) ...(3)


untuk k = 0, 1, 2, . , N-1

Karena setiap koefisen DFT merupakan bilangan kompleks, maka kita


tidak bisa memplotkannya terhadap indeks frekuensinya. Dari solusi persamaan
(3), amplitudo dan fase dari setiap koefisien DFT dapat ditentukan dan diplotkan
terhadap indeks frekuensinya. Spektrum amplitudonya didefinisikan sebagai
berikut :
1 1

Ak = X(k) = √( [ ( )])2 + ( [ ( )])2 ...(4)


dengan k = 0, 1, 2, ... N-1

Kita dapat mengubah representasi spektrum amplitudo menjadi one-sided


amplitude spectrum dengan memasukkan amplitudo pada persamaan (4) menjadi :
X(0) , k = 0
1

Ak = {1

...(5)
X(k) , k = 1 , … N/2

Kita juga dapat mengkonversi frekuensi bin k ke dalam Hertz


dengan :

f= ...(6)

Dengan cara serupa, spektrum fase diberikan oleh : [ ( )]

( )

dengan k = 0, 1, 2, ... N-1


=
k −1

...(7)
Selain spektrum amplitudo dan fase, dengan DFT kita juga dapat menghitung
spektrum daya yang didefinisikan sebagai:
1 1
Pk = ...(8)
X(k) 2 = {( [ ( )])2 + ( [ ( )])2}

2 2

dengan k = 0, 1, 2, ... N- 1

Parameter lain yang bisa didapatkan adalah besar spasi frekuensi di antara
koefisien- koefisien DFT dalam domain frekuensi, yaitu :

f= (Hz) ...(9)

1.2.4 Estimasi Spektrum Sinyal dengan Windowing


Ketika kita mengaplikasikan DFT pada bagian sebelumnya, secara teoritis kita
menggunakan asumsi berikut : Pertama, data yang disampling secara periodik; dan kedua,
data tersebut kontinyu dan berada pada daerah frekuensi yang terbatas. Namun seringkali
kita dihadapkan pada permasalahan untuk menganalisis suatu sinyal yang panjang dengan
cara mengambil satu bagian yang cukup mewakili. Hal ini lebih kita kenal sebagai proses
windowing. Sebagai contoh, misalnya diinginkan untuk spektrum rata-rata atau yang lebih
dikenal sebagai spektrogram. Sayangnya dalam hal ini kita tidak dapat mengambil sinyal
secara sederhana dengan menentukan suatu periode secara sembarang karena akan
menyebabkan efek diskontinuitas (Tri Budi Santoso, 2005).

Pada proses windowing, respon impulse suatu sinyal infinite h[n] dikalikan
dengan window w[n] untuk mendapatkan respon impulse hd[n] = w[n]h[n].
Sebagai contoh di sini kita akan melihat perbandingan rumus antara window
hamming, hanning dan rectangular (Tri Budi Santoso, 2005).
Rectangular : w[n] = 1 , 0 ≤ n ≤ N-1 ...(10)
Hanning : w[n] = ( 1 – cos
1 2
) , 0 ≤ n ≤ N-1 ...(11)
2 −1

w[n] = 0.541 – 0.46 cos , 0 ≤ n ≤ N-1 .


2

Hamming : −1
...(12)

1.3 PERANGKAT YANG DIPERLUKAN


1. PC yang dilengkapi dengan perangkat multimedia (sound card, Microphone, Speaker
active, atau headset).
2. Sistem Operasi Windows dan Perangkat Lunak Matlab yang dilengkapi dengan tool box
DSP

1.4 PROSEDUR KERJA


1.4.1 Discrete / Fast Fourier Transform
1.4.1.1 Dasar Pembentukan DFT
Pada bagian ini, kita mulai dengan mencoba melihat bentuk transformasi
Fourier dari sinyal cosinus yang memiliki periode eksak di dalam window yang
terdapat pada sampel. Langkahnya adalah sebagai berikut :
1. Bangkitkan sinyal sinus x(t) = 3 cos (2πt), pada t = nT. Untuk suatu n = 0 – 99, dan T =
0,01. Tampilkan sinyalnya dalam bentuk sinus kontinyu dan sinus diskrit.
2. Untuk memulai langkah program DFT, kita mulai dengan membuat program baru,
yang mengacu pada bentuk persamaan berikut ini :

Atau dalam bentuk imajiner :

clear all;
N=200;
nn=N-1;

for k=1:200;
x_n=0.0;
for n=1:nn

x_n = (3*cos(0.02*pi*n)).*(exp(-j*k*2*pi*n/200)) +
x_n; end
yR(k)=real(x_n);

yI(k)=imag(x_n);
magni_k(k)=sqrt(real(x_n).*real(x_n)

+imag(x_n).*imag(x_n));
end

figure(1)
stem(yR)

axis([0 200 0 800])

xlabel('indeks fekuensi')
title('Bagian Real')
grid;

figure(2)
stem(yI)

axis([0 200 0 800])

xlabel('indeks frekuensi')
title('Bagian Imajiner')
grid;

Perhatikan gambar yang Anda dapatkan. Ada dua nilai non-zero dalam
domain frekuensi indek, tepatnya pada n=2 dan n=N-2 atau 198, masing-masing
bernilai 300. Nilai ini merepresentasikan AN/2, dimana A=3 yang merupakan
amplitudo sinyal cosinus dan N = 200 merupakan jumlah sampel yang digunakan.
Sementara bagian imajiner bernilai nol semua. Mengapa ini terjadi? Bandingkan
dengan hasil langkah pertama.
3. Coba ulangi langkah 1 dan 2 dengan merubah sinyal cosinus menjadi sinyal sinus.
Untuk langkah k-1 anda rubah :
x_t=3*cos(2*pi*n*T); menjadi
x_t=3*sin(2*pi*n*T); Demikian juga pada untuk langkah ke-3
bentuk :
x_n = (3*cos(0.02*pi*n)).*(exp(-j*k*2*pi*n/200)) + x_n;
menjadi :
` x_n = (3*sin(0.02*pi*n)).*(exp(-j*k*2*pi*n/200))
+ x_n; Apa yang Anda dapatkan?
4. Ulangi langkah 1-3 dengan merubah nilai sample N=200, menjadi N=1000. Apa yang
Anda dapatkan?
1.4.1.2 Zero-Padding
Untuk memahami konsep zero padding pada DFT, coba Anda ikuti
langkah- langkah percobaan berikut ini :
1. Buat program baru untuk pembangkitan sekuen unit step dan gunakan juga fft untuk
memperoleh nilai DFT !
%File Name: zero_padding.m
for n = 1:15

if n<= 4 x(n)

= 1;

else
x(n) = 0;

end
end
t = 1:15;

subplot(2,1,1), stem(t,x)

%axis([0 4 0 2]), grid;


s = fft(x,16);

spec = abs(s);
f_x = length(s);
f = 0:f_x-1;
subplot(2,1,2)

; plot(f,spec)
axis([-0.5 17 -0.5 12]), grid;

2. Modifikasi program Anda dengan menambahkan nilai nol sebanyak 4 angka di


belakang sekuen bernilai satu tersebut !
3. Modifikasi program Anda sehingga nilai nol dibelakang sekuen unit step menjadi 12,
14 dan 16. Catat apa yang terjadi !
4. Jelaskan konsep zero padding yang telah Anda buat simulasinya.

1.4.1.3 Representasi Zero-Padding dalam Domain Frekuensi


Cara yang paling mudah dalam menguji program transformasi ke domain
frekuensi adalah dengan menggunakan sinyal bernada tunggal, yaitu sinyal dengan
fungsi dasar sinusoida. Untuk itu, coba Anda perhatikan dengan yang telah Anda
lakukan pada percobaan pertama, yaitu pada pemahaman dasar DFT. Di situ sinyal
cosinus yang ditransformasikan menghasilkan bentuk dalam tampilan indeks
frekuensi. Dengan mengkombinasikan percobaan ke-1 dan percobaan ke-2 kita
akan mampu menyusun sebuah program DFT yang mampu digunakan untuk
pengamatan sinyal waktu diskrit dan melihat tampilannya dalam domain
frekuensi. Untuk itu ikuti langkah berikut:
1. Bangkitkan sebuah sinyal sinusoidal dengan script berikut :
T = 128; n = 0:1/T:(T-1)/T; f = 10; x = sin(2*pi*n*f);

Tampilkan plot domain waktunya !


2. Tampilkan plot domain frekuensinya :
X = fft(x); spec = abs(X); f_X=length(X)
f=0:f_X-1; plot(f/T,spec);

axis([0 T/T 0 100])

xlabel('domain frekuensi (x pi), ternormalisasi


terhadap frekuensi sampling')

3. Sekarang coba Anda tambahkan zero padding pada sinyal yang telah Anda bangkitkan.
zpf=2; % faktor zero padding
nn=length(x); k=0:nn-1;
xw=[x,zeros(1,(zpf-1)*T)];
nn=length(xw);
k=0:nn-1;
plot(zpf*k/nn,xw)

Tampilkan juga grafik domain frekuensinya mengikuti script langkah 2 !


Bagaimana hasil yang Anda dapatkan?
4. Coba Anda ubah nilai faktor zero padding menjadi 4, 6 dan 8. Apa yang Anda dapatkan?
5. Lakukan sedikit modifikasi sehingga kedua sinyal domain frekuensi ditampilkan dalam
satuan hertz, yaitu pada bagian:

plot(f/T,spec); menjadi plot(f/2,spec);

Jangan lupa menyesuaikan nama label pada sumbu x. Jelaskan apa pengaruh
penambahan zero padding pada sinyal sesuai hasil yang Anda dapatkan.

1.4.1.4 Fenomena Gibbs

Fenomena Gibbs merupakan fenomena yang mendasari proses


transformasi pada FFT. Untuk memahami bagaimana penjelasan
fenomena tersebut, Anda ikuti langkah berikut:
1. Bangkitkan sebuah sinyal sinus dengan cara seperti berikut :
%File name: fen_Gibb.m

t=-3:6/1000:3;

N=input('Jumlah sinyal = ');


c0=0.5;

w0=pi;
xN=c0*ones(1,length(t));
for n=1:2:N

theta=((-1)^((n-1)/2)-1)*pi/2;

xN = xN + 2/n/pi*cos(n*w0*t +theta);

end

plot(t,xN)
xlabel('waktu')

ylabel('x(t)')

Bagaimana hasilnya?
2. Jalankan lagi program Anda, dengan cara memberi jumlah masukan sinyal yang
berbeda, misalnya 3, 5, 7, dst. Apa yang Anda dapatkan?
3. Dari langkah percobaan Anda ini, fenomena apa yang didapatkan tentang sinyal
persegi ? Apa kaitannya dengan sinyal sinus?
1.4.1.5 Pengamatan Frekuensi Sinyal Sederhana
Di bagian ini, kita akan mengamati bentuk sinyal dalam domain waktu dan
domain frekuensi dengan memanfaatkan library fft yang ada dalam DSP Toolbox
MATLAB. Apabila ada yang kurang jelas dengan perintah yang diberikan dalam
petunjuk, jangan pernah sungkan menanyakan kepada asisten. Selanjutnya ikuti
langkah berikut:
1. Bangkitkan sinyal sinus yang memiliki frekuensi fs = 100 Hz, t = (1:100)/fs, f = 5 Hz,
dan amplitudo 1 Volt !
2. Tranformasikan sinyal yang telah Anda bangkitkan ke dalam domain menggunakan
fungsi FFT dengan fungsi Y = fft(X,n) !
S=fft(s,512);
w=(0:255)/256*(Fs/2); % normalisasi frekuensi terhadap Fs
plot(w,abs(S(1:256)))

3. Coba Anda rubah nilai frekuensi menjadi 10, 15 dan 20 Hzt. Apa yang Anda lihat pada
gambar sinyal Anda?
4. Coba Anda rubah nilai amplitudo dari 1 volt menjadi 2, 4 atau 5. Apa yang terjadi
pada sinyal Anda?
5. Coba Anda rubah nilai jumlah titik FFT dari 512 menjadi 256 dan 128. Apa yang
terjadi pada sinyal Anda?
6. Coba Anda bangkitkan dua buah sinyal lain dengan amplitudo dan frekuensi yang
berbeda-beda dengan sinyal pertama, lalu tampilkan plot sinyalnya dalam domain
waktu dan frekuensi.

1.4.2 Spektrum Sinyal


1.4.2.1 Spektrum Amplitudo dan Spektrum Daya
Pada bagian ini, kita akan mempelajari salah satu aplikasi DFT dan FFT untuk
menampilkan spektrum sinyal dalam domain frekuensi yang menunjukkan amplitudo dan
daya sinyal. Ikuti langkah – langkah berikut:

1. Diberikan sinyal x( t) = 2 sin (2000πt) dengan frekuensi sampling 8 kHz. Hitung


spektrum sinyal menggunakan DFT bila resolusi frekuensi yang digunakan adalah
8 Hz ! Untuk itu, kita perlu menghitung jumlah titik sampel :

N= ∆ = 8000
= 1000
Selanjutnya ketik script berikut : 8

t = [0:1:N-1]/fs;

x = 2*sin(2000*pi*t);

% algoritma DFT
xf = abs(fft(x))/N; % menghitung spektrum amplitudo
P = xf.*xf; % menghitung spektrum daya

f = [0:1:N-1]*fs/N; % penetapan frekuensi bin ke dalam Hz


subplot(211); plot(f,xf); grid

xlabel('Frekuensi(Hz)'); ylabel(‘Spektrum Amplitudo (DFT)');


subplot(212); plot(f,P); grid

xlabel('Frekuensi(Hz)'); ylabel(‘Spektrum Daya (DFT)');


figure

% Menampilkan spektrum satu


sisi xf(2:N)=2*xf(2:N);

f =[0:1:N/2]*fs/N;

subplot(211); plot(f,xf(1:N/2+1)); grid


xlabel('Frequency(Hz)'); ylabel(Spektrum Amplitudo
(DFT)'); subplot(212); plot(f,P(1:N/2+1)); grid
xlabel('Frequency(Hz)'); ylabel(‘Spektrum Daya (DFT)');

Bagaimana hasil yang Anda dapatkan ? Plot pertama dan kedua


menunjukkan spektrum dua sisi dari amplitudo dan daya menggunakan
DFT yang mana pasangan frekuensi keduanya muncul pada 1000 Hz dan
7000 Hz. Sementara plot ketiga dan keempat menunjukkan spektrum satu
sisi dari amplitudo dan daya yang mana spektrum yang ditampilkan hanya
pada rentang 0 – 4000 Hz (folding frequency). Kenapa ini terjadi?

Hubungkan dengan teorema Nyquist pada praktikum sebelumnya.

2. Sekarang kita menghitung spektrum sinyal menggunakan FFT. Untuk itu, jumlah
titik sampel harus merupakan kepangkatan dua. Dari bagian pertama, jumlah titik
sampel yang digunakan adalah 1000. Bila di sini kita menggunakan :

N = 210 = 1024 titik sampel


sehingga diperlukan zero padding sebanyak 24. Maka resolusi frekuensi secara
teori adalah :
8000

∆ =
= 1024 = 7,8125 Hz

Selanjutnya tampilkan spektrum amplitudo dan dayanya seperti pada langkah 1


dengan menambahkan script berikut sebelum tahapan DFT :
x = [x, zeros(1,24)];
N = length(x);

Bagaimana tampilan spektrum yang Anda dapatkan? Bandingkan hasilnya dengan


spektrum yang didapatkan dengan DFT.
1.4.2.2 Estimasi Spektrum Sinyal dengan Windowing
Bagian ini merupakan sebagian jawaban dari soal yang ada di buku Li
Tan, 2008, “Digital Signal Processing: Fundamentals and Application“, nomor
4.17 dan 4.18. Diketahui sebuah isyarat yang terdiri dari 3 macam sinusoidal
dengan persamaan yang diketahui di bawah ini. Lalu dilakukan simulasi untuk
mengetahui pengaruh penggunaan jendela pada algoritma FFT untuk menemukan
spektrum dari sinyal yang merupakan superposisi dari sinyal-sinyal 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π)
dengan frekuensi sampling 8000 Hz. Untuk itu, ikuti langkah-langkah berikut :
1. Mula-mula bangkitkan sinyal sesuai dengan ketentuan di atas dan tampilkan plot dari
setiap sinyal (x1, x2, x3) dan hasil superposisinya (x) ! Gunakan t = 0:1/Fs:0.1];

2. Transformasikan sinyal yang telah Anda bangkitkan ke dalam domain frekuensi dan
tampilkan spektrumnya dalam mode single-side menggunakan script berikut:
L = length(x);
NFFT = 2^nextpow2(L); % Specifies the number of FFT points
to use to calculate the PSD
Y = fft(x,NFFT)/L;

f = Fs/2*linspace(0,1,NFFT/2);
plot(f,2*abs(Y(1:NFFT/2)))

Perhatikan bentuk spektrum yang Anda dapatkan ! NFFT merupakan jumlah


poin FFT yang digunakan untuk menghitung power spectral density (PSD)
yang dicari dengan fungsi nextpow2. Gunakan help MATLAB untuk
mengetahui kegunaan fungsi ini.
2. Untuk mengetahui pengaruh dari windowing, kita akan menggunakan window
Rectangular, Triangular, Hamming, Hanning, dan Blackman. Gunakan script berikut
untuk menambahkan windowing pada spektrum sinyal.
x_rect = x.*rectwin(L)'; % penambahan window
rectangular
x_tri = x.*triang(L)'; % penambahan window triangular
x_ham = x.* hamming(L)'; % penambahan window hamming
x_han = x.* hann(L)'; % penambahan window hanning
x_black =x.* blackman(L)'; % penambahan window blackman

Tampilkan spektrum untuk setiap hasil windowing yang ditambahkan pada


sinyal seperti pada langkah 2 ! Bagaimana hasil yang Anda dapat ?
Bandingkan tingkat kebocoran spektrum (spectrum leakage), ketinggian titik
puncak dan resolusi setiap spektrum yang dihasilkan.
3. Untuk melihat perbandingan respon sinyalnya dalam domain waktu dan frekuensi,
aktifkan Windows Visualization Tool dengan menambahkan script berikut :
wvtool(rectwin(L),triang(L),hamming(L),hann(L),blackman(L));
h=legend('Rectangular','Triangular','Hamming','Hanning','Bla

ckman');
set(h,'Interpreter','None');

Apakah Anda melihat tampilan seperti di bawah ini?

Gambar 5. Windows Visualization Tool


4. Pada domain waktu, ambil satu titik di masing-masing grafik dengan jumlah sampel
yang sama dan amati perbedaan amplitudo yang dicapai dengan jumlah sampel
tersebut. Begitu juga pada domain frekuensi, ambil 1 titik di masing-masing grafik
dengan frekuensi normalisasi yang sama dan amati perbedaan magnitude yang
dicapai. Perbedaan nilai-nilai tersebut menunjukkan apa? Jelaskan juga karateristik
masing-masing window yang telah Anda gunakan.

1.4.3 Aplikasi Algoritma FFT pada Sinyal Audio


Pada bagian sebelumnya, kita telah belajar cara melakukan transformasi Fourier
pada sinyal – sinyal sederhana. Pada bagian ini kita akan mencoba menggunakan prinsip
tersebut pada sinyal yang sering kita temui pada kehidupan sehari-hari, yaitu sinyal audio.

Selain dalam bentuk plot grafik, kali ini Anda juga akan mempelajari bagaimana
menyatakan sinyal audio dalam bentuk spektrogram. Melalui spektrogram, sinyal
dapar dinyatakan sebagai fungsi waktu sekaligus frekuensi.
1. Buat program pemanggil file audio *.wav dengan frekuensi sampling 10 kHz. Coba
tampilkan grafik dalam domain waktu.
2. Transformasikan sinyalnya ke dalam domain frekuensi dengan script berikut :
Y=fft(y);
plot((abs(Y(1:3400))))

2. Tampilkan spektrogram sinyal audio dengan menambahkan sintaks berikut


: specgram(Y)

3. Coba Anda lakukan perubahan sedikit, tepatnya pada bagian plotting


: plot((abs(Y(1:3400))))
menjadi
plot((abs(Y(1:4000))))

Jangan lupa Anda catat yang terjadi.

1.5 ANALISIS DATA


Sekarang saatnya Anda membuat laporan dan analisis dari apa yang telah
Anda lakukan dan tugas akhir berikut. Mengapa muncul fenomena tersebut? Apa
yang menyebabkannya? Dan parameter apa yang perlu diperhatikan?

1.6 TUGAS AWAL


1. Jelaskan apa perbedaan DFT, FFT dan SFT?
2. Apa yang dimaksud dengan zero padding dan fenomena Gibbs? Apa peranannya
dalam DFT/FFT?
3. Apa yang dimaksud dengan windowing pada pengolahan sinyal ? Jelaskan perbedaan
bila window digunakan antara sebelum dan sesudah transformasi domain dari waktu
ke frekuensi!
4. Diberikan sebuah deret sinyal x(n) dari 0 ≤ n ≤ 2 di mana x(0) = 1, x(1) = 2 dan x(3) = 2.
Hitung koefisien DFT-nya ! Gunakan cara manual dan verifikasi jawaban yang
Anda dapat menggunakan MATLAB dengan fungsi fft().

1.7 TUGAS AKHIR


1. Dari program yang sudah Anda jalankan, berikan penjelasan algoritma setiap
program terhadap output yang dihasilkannya.
2. Bila konsep transformasi Fourier untuk sinyal dihubungkan dengan bidang
komunikasi radio, Anda akan mengetahui bahwa untuk memodulasi sinyal informasi,
baik analog maupun digital, digunakan sinyal sinusoidal, bukan sinyal persegi. Kenapa
demikian? Lakukan simulasi menggunakan konsep pembangkitan sinyal, FFT dan
analisis spektrum domain frekuensi!
3. Coba Anda buat record suara, terserah berupa vokal atau ucapan yang lain, dan
amati spektrum sinyal dan spektrogramnya ! Bandingkan antara sebelum dan
sesudah penggunaan window (gunakan window Hamming)!

REFERENSI

Santoso, Tri Budi dan Miftahul Huda. 2006. Modul Praktikum Sinyal dan Sistem
(Bagian 5 dan 6).

. 2006. Modul Praktikum Pengolahan Sinyal Wicara (Bagian 4).


Tan, Li. 2008. Digital Signal Processing, Fundamentals and Applications. Elsevier Inc.
MODUL 8
TRANSFORMASI – Z

4.1 TUJUAN PRAKTIKUM


1. Mahasiswa mengerti cara mendapatkan transformasi-z dari fungsi waktu diskrit dan
mendapatkan invers dari transformasi – Z.
2. Mahasiswa dapat menggunakan toolbox Matlab untuk menyelesaikan persamaan
beda suatu sistem menggunakan transformasi – Z.
3. Mahasiswa dapat mengimplementasikan permasalahan di dalam domain – Z.

4.2 DASAR TEORI


Transformasi-Z adalah bentuk lain dari transformasi Fourier. Bila
transformasi Fourier merepresentasikan suatu sinyal domain waktu kontinu ke
dalam domain frekuensi, maka transformasi-Z merepresentasikan sinyal dalam
domain waktu diskrit ke dalam suatu domain yang dinamakan domain-Z.
Transformasi-Z menghasilkan deskripsi domain frekuensi dari sinyal waktu
diskrit, yang merupakan dasar bagi perancangan sistem digital, misalnya filter
digital (FIR dan IIR) (Karris, 2007).
Tangggapan sistem y(n) terhadap masukan eksponensial kompleks dari
bentuk zn untuk sistem yang invariant waktu dan waktu diskrit linear dengan
tanggapan impuls h(n) adalah :

y(n)=H(z) zn ...(1)

dengan: H(z) =∑h(n) z-n ...(2)

Transformasi-Z dari suatu sinyal waktu diskrit umum x(n) adalah seperti
persamaan 2. Dimana z adalah variabel kompleks. Transformasi-Z dari x(n)
biasanya ditulis sebagai z{x[n]} dan hubungan antara x[n] dengan transformsi-Z
yang ditunjukkan sebagai (Oppenheim et al, 2000) :

x[n] z X(z) ...(3)

Hubungan antara transformasi-Z dan transformasi Fourier untuk sinyal waktu diskrit
hampir sama dengan untuk sinyal waktu kontinyu, tetapi dengan beberapa perbedaan. Pada
waktu kontinyu, transformasi Laplace diubah menjadi transformasi Fourier bagian real dari
transformasi sama dengan nol. Jika dijabarkan dalam bidang-s, transformasi Laplace diubah
menjadi transformasi Fourier pada sumbu imajiner. Sebaliknya, transformasi-Z diubah
menjadi transformasi Fourier ketika magnitude bernilai satu. Jadi transformasi-Z diubah
menjadi transformasi Fourier pada sekeliling bidang-z kompleks sesuai dengan lingkaran
beradius satu dan perannya dalam pembahasan
transformasi-Z sama dengan peranan sumbu imajiner dalam bidang-s
untuk transformasi Laplace (Oppenheim et al, 2000).

Gambar 1. Bidang-z kompleks

4.3 PERANGKAT YANG DIPERLUKAN


1. PC yang dilengkapi dengan perangkat multimedia (sound card, Microphone, Speaker
active, atau headset).
2. Sistem Operasi Windows dan Perangkat Lunak Matlab yang dilengkapi dengan tool box
DSP

4.4 PROSEDUR KERJA


4.4.1 Transformasi – Z
Lakukan langkah-langkah percobaan berikut untuk mendapatkan
transformasi-Z dari suatu fungsi.
1. Misalnya sebuah filter IIR dengan koefisien umpan maju {4,5,6} dan koefisien umpan
mundur {2,3}. cari fungsi transfernya dalam domain-z (pelajari materi kuliah/di buku
teks tentang transformasi Z). Tentukan numerator dan denominatornya!

2. Cari letak zero dan pole-nya!


Untuk mencari letak zero, ketik listing berikut :
B=[4, 5, 6];
zero1 = (-B(2)+sqrt(B(2)^2-4*B(1)*B(3)))/(2*B(1))
zero2 = (-B(2)-sqrt(B(2)^2-4*B(1)*B(3)))/(2*B(1))

Untuk mencari letak pole, ketik listing berikut :


A=[1, -2, -3];

pole1 = (-A(2)+sqrt(A(2)^2- 4*A(1)*A(3)))/(2*A(1))

pole2 = (-A(2)-sqrt(A(2)^2- 4*A(1)*A(3)))/(2*A(1))

Apakah koefisien numerator dan denominator yang Anda dapat dari langkah 1
sama dengan koefisien B dan A di atas? Jelaskan makna baris perintah untuk
mendapatkan zero1, zero2, pole1, dan pole2 pada listing.
4.4.2 Pengenalan Diagram Pole-Zero

Diagram pole-zero digunakan


untuk menganalisis kestabilan dari suatu
fungsi transfer dalam domain z.
1. Gambarkan titik pole dan zero yang Anda dapat dari langkah 4.1 dalam domain-z
dengan menambahkan perintah berikut di bawah listing programnya!

zplane(B,A);

Perhatikan diagram yang dihasilkan dan cocokkan nilai pole dan zero yang
ditunjukkan oleh grafik dengan hasil perhitungan!
2. Diberikan fungsi transfer dalam domain Z sebagai berikut :

Dapatkan diagram pole dan zero-nya menggunakan langkah yang sama dengan di atas!

4.4.3 Invers Transformasi – Z


Invers transformasi-z dapat dicari menggunakan metode ekspansi pecahan
parsial dan metode ekspansi deret. Untuk mencari invers transformasi-Z
menggunakan ekspansi pecahan parsial, digunakan perintah residuez. Sedangkan
bila menggunakan metode ekspansi deret, digunakan perintah deconv.

1. Dapatkan invers transformasi-Z dari fungsi transfer pada langkah 4.2 no.2
menggunakan metode ekspansi parsial! Listing selengkapnya :

num = [0 1];

den = [1 -0.25 -0.375];


[R,P,K]=residuez(num,den)

Bagaimana hasilnya? Selanjutnya F(z) diekspansikan ke dalam bentuk


penjumlahan R/(1-Pz-1) dimana R adalah residu dan P adalah pole. Sehingga

akan didapatkan :
Jangan lupa Anda catat yang terjadi !
2. Dapatkan invers transformasi-Z dari fungsi transfer pada langkah 4.2 no.1
menggunakan cara seperti di atas.
3. Diberikan sebuah fungsi transfer : 1+ 2 −1 + −2

X(z) =
1− −1+0.3561 −2

47
Dapatkan 5 koefisien pertama dari inversnya menggunakan metode ekspansi
deret! Listing selengkapnya:
b = [1 2 1];
a = [1 -1 0.3561];
n = 5;
b = [b zeros(1,n-
1)]; [x,r] =
deconv(b,a); disp(x)

Berapakah nilai-nilai koefisien yang Anda dapatkan?


4. Ada kalanya beberapa sistem memberikan fungsi transfer yang berupa pasangan
polynomial seperti berikut :
1( ) 2( ) 3( )

X(z) =
1( ) 2( ) 3( )

Untuk mencari inversnya, kita dapat menggunakan metode ekspansi parsial maupun
ekspansi deret, namun dengan menambahkan perintah ‘sos2tf’ (second order sections

– to – transfer function). Berikut adalah contohnya dengan metode ekspansi parsial :

Diketahui :
N1(z) = 1 – 1,22346z-1 + z-2
N2(z) = 1 – 0,437833z-1 + z-2
N3(z) = 1 + z-1
D1(z) = 1 – 1,433509z-1 +
0,85811z-2 D2(z) = 1 – 1,293601z-1
+ 0,556926z-2 D3(z) = 1 –
0,612159z-1
Listingnya adalah sebagai berikut :
n=5;
N1 = [1 -1,22346 1]; D1 = [1 -1.433509 0.85811];
N2=[………];D2=[………];
N3=[110];D3=[………];
b = [N1 ; N2 ; N3];
a = [D1 ; D2 ; D3];
[b,a] = sos2tf ([b a]);
b = [b zeros(1,n-1)];
[x,r] = deconv(b,a); disp(x)

Bagaimana hasil yang Anda dapat? Perhatikan urutan penulisan sintaksnya!

5. Dapatkan invers dari fungsi transfer pada langkah 4.4.3 no.4 menggunakan metode
ekspansi parsial!

48
4.4.4 Implementasi Persamaan Domain-Z Dalam Penentuan Jenis Filter
Pada dasarnya, filter diklasifikasikan dalam 4 kategori, yaitu : lowpass, highpass,
bandpass, dan bandstop. Setiap jenis memiliki kegunaan khusus di dalam pengolahan sinyal
digital. Kegunaan yang paling mendasar adalah untuk keperluan desain filter digital. Untuk
mengetahui jenis filter, fungsi yang digunakan adalah freqz dengan sintaks :

[h,w] = freqz (B,A,N)

sehingga didapatkan respon frekuensi filter yang terdiri atas respon magnitude dan
respon fase, dengan N merupakan frekuensi ternormalisasi yang digunakan.
Perbedaan setiap jenis filter dapat dilihat dari bentuk respon magnitudonya
sebagai berikut :

Gambar 2. Respon magnitude lowpass filter Gambar 3. Respon magnitude highpass filter

Gambar 4. Respon magnitude bandpass filter Gambar 5. Respon magnitude bandstop filter

Diberikan beberapa fungsi transfer dalam domain Z sebagai berikut :


1− 0,9 −1 + 0,81 −2

a). X(z) ; b). X(z) 1− 0,6 −1+0,36 −2 ;


− 0,5

= =
0,5 2 − 0,3 2

c). X(z)
= 2− 0,5 + 0,25

49
1. Dapatkan gambar diagram pole dan zero untuk ketiga fungsi transfer di atas !
Sebelumnya perhatikan bentuk fungsi transfer a dan c) ! Kedua bentuk
tersebut belum dalam bentuk standar (delay form). Oleh karena itu, untuk
mendapatkan nilai numerator dan denominator, ubah dahulu menjadi
bentuk standar.
2. Gambarkan respon frekuensinya dengan N = 1024. Listing berikut
adalah untuk mendapatkan respon frekuensi dari fungsi transfer
pertama (kasus a) :

[h,w] = freqz([1],[1 -0.5],1024);

phi = 180*unwrap(angle(h))/pi;

subplot(2,1,1),plot(w,abs(h)),grid;xlabel('Frekuensi(radian)'
), ylabel('Magnitude')

subplot(2,1,2),plot(w,phi),grid;xlabel('Frekuensi(radian)'),y
la bel('Fase(derajat)')

Bagaimana hasil yang Anda dapat?

3. Dapatkan respon frekuensi untuk fungsi transfer kedua dan ketiga


menggunakan cara seperti nomor 2 di atas!
4. Identifikasi jenis filter apa yang digambarkan oleh fungsi-fungsi transfer tersebut!

4.5 ANALISIS DATA


Sekarang saatnya Anda membuat laporan dan analisis dari apa
yang telah Anda lakukan. Mengapa muncul fenomena tersebut? Apa yang
menyebabkannya? Fungsi dan parameter apa yang perlu diperhatikan?
Anda memiliki waktu 1 minggu untuk menyelesaikan modul praktikum 04
ini.

REFERENSI
Karris,Steven T. 2007. Signal and System with MATLAB®
Computing and SIMULINK®Modeling 3rd. Ed. Orchard
Publication
Tan, Li. 2008. Digital Signal Processing, Fundamentals and Applications. Elsevier
Inc.

50
Weeks, Michele. 2006. Digital Signal Processing Using MATLAB® and Wavelets.
Infinity Science Press : Massachusets

51

Anda mungkin juga menyukai