PERCOBAAN 5
OPERASI KONVOLUSI
Tujuan
Praktikum
- Mahasiswa dapat memahami tujuan dan proses
operasi konvolusi pada dua sinyal
- Mahasiswa dapat membuat program operasi
konvolusi dan mengetahui fungsi konvolusi dari suatu sinyal terhadap sistem
6.1 DASAR TEORI
6.1.1 Konvolusi dua Sinyal
Berikut ini akan ditunjukkan konvolusi dua sinyal.
Konvolusi antara dua sinyal diskrit x[n] dan v[n] dapat dinyatakan sebagai
Bentuk
penjumlahan yang ada di bagian kanan pada persamaan (1) disebut sebagai convolution
sum. Jika x[n] dan v[n] memiliki nilai 0 untuk semua integer pada n<0, selanjutnya
x[i]=0 untuk semua integer pada i<0 dan v[i-n]=0 untuk semua integer n – i
< 0 (atau n<i). Sehingga jumlahan pada persamaan (1) akan menempati dari
nilai i=0 sampai dengan i=n, dan operasi konvolusi selanjutnya dapat dituliskan
sebagai:
6.1.2 Mekanisme Konvolusi
Komputasi pada persamaan (1) dan (2) dapat
diselesaikan dengan merubah discretetime index n sampai dengan i dalam
sinyal x[n] dan v[n]. Sinyal yang dihasilkan x[i] dan v[i] selanjutnya menjadi
sebuah fungsi discrete-time index i. Step berikutnya adalah menentukan v[n-i]
dan kemudian membentuk pencerminan terhadap sinyal v[i]. Lebih tepatnya v[-i] merupakan
pencerminan dari v[i] yang diorientasikan pada sumbu vertikal (axis), dan
v[n-i] merupakan v[-i] yang digeser ke kanan deng an step n. Saat pertama kali product
(hasil kali) x[i]v[n-i] terbentuk, nilai pada konvolusi x[n]*v[n] pada
titik n dihitung dengan menjumlahkan nilai x[i]v[n-i] sesuai rentang i pada
sederetan nilai integer tertentu.
Untuk lebih jelasnya permasalahan ini akan
disajikan dengan suatu contoh penghitung konvolusi pada dua deret nilai integer
berikut ini.
Sinyal pertama: x[i]= 1 2 3
Sinyal kedua
: v[i]= 2 1 3
• Step pertama adalah pembalikan sinyal
kedua, v[n] sehingga didapatan kondisi seperti berikut:
Sinyal pertama: x[i] = 1 2 3
Sinyal kedua: v[-i] = 3 1 2
• Step ke dua adalah pergeseran dan penjumlahan
Sinyal pertama: 1 2 3
Sinyal kedua: 3 1 2
------------------ x
product and sum: 0 0 2 0 0
= 2
• Step ke tiga adalah
pergeseran satu step dan penjumlahan
Sinyal pertama: 1 2 3
Sinyal kedua: 3 1 2
--------------------- x
product and sum: 0 1 4 0 =
5
• Step ke empat adalah
pergeseran satu step dan penjumlahan
Sinyal pertama: 1 2 3
Sinyal kedua: 3 1 2
-------------------------
x
product
and sum: 3 2 6 = 11
• Step ke lima adalah pergeseran
satu step dan penjumlahan
Sinyal pertama: 1 2 3
Sinyal kedua: 3 1 2
------------------- x
product and sum: 0 6 3 0 =
9
• Step ke enam adalah
pergeseran satu step dan penjumlahan
Sinyal pertama: 1 2 3
Sinyal kedua: 3 1 2
------------------- x
product and sum: 0 0 9 0 0
= 9
• Step ke tujuh adalah
pergeseran satu step dan penjumlahan
Sinyal pertama: 1 2 3
Sinyal kedua: 3 1 2
------------------- x
product
and sum: 0 0 0 0 0 0 = 0
Dari hasil product and sum
tersebut hasilnya dapat kita lihat dalam bentuk deret sebagai berikut: 2 5 11 9
9. Disini hasil penghitungan product and sum sebelum step pertama dan step ke
tujuh dan selanjutnya menunjukkan nilai 0, sehingga tidak ditampilkan. Secara
grafis dapat dilihat seperti berikut ini:
Gambar 6.1. Mekanisme Konvolusi
Pada Gambar 6.1 bagian atas, menunjukkan sinyal x[n],
bagian kedua menunjukkan sinyal v[n], sedangkan bagian ketiga atau yang paling
bawah merupakan hasil konvolusi.
6.2 Peralatan
Sistem
Operasi Windows dan Perangkat Lunak Matlab yang dilengkapi dengan tool box DSP
6.3 Langkah
Percobaan
6.3.1 Konvolusi Dua Sinyal
Misalnya ada dua sekuen sebagai berikut:
x(n) = [3, 11, 7, 0, -1,
4, 2], -3 ≤ n ≤ 3
dan
h(n) = [2, 3, 0, -5, 2,
1] -1≤ n ≤ 4
kemudian akan ditentukan konvolusi y(n) = x(n) *
h(n). Jika sekuen acak dengan durasi yang terbatas. MATLAB tidak dapat dignakan
secara langsung untuk menghitung konvolusi. MATLAB menyediakan fungsi yang
sudah jadi, disebut CONV yang menghitung konvolusi antara dua sekuen dimulai
pada n = dan perintahnya adalah:
y = conv (x,h);
Untuk mencari nilai-nilai y(n) untuk percobaan di
atas program MATLAB-nya adalah:
%----------------------------------------------------------------------
%Nama File :
Konvolusi_1.m
%Oleh :Tri Budi Santoso, Miftahul Huda, Hary Octvianto
%----------------------------------------------------------------------
x(n) = [3, 11,
7, 0, -1, 4, 2];
h(n) = [2, 3,
0, -5, 2, 1];
y = conv(x,h);
Walupun
demikian, fungsi CONV tidak menyediakan dan tidak pula menerima informasi
pewaktuan apapun jika sekuen mempunyai support yang sembaarang. Apa yang
dipeerlukan adalah titik awal dan akhir dari y(n). Diberikan suatu durasi
tertentu x(n) dan y(n) sangatlah mudah untuk menentukan titik-titik ini.
Misalnya:
{x(n); nxb ≤ n ≤ nxe} dan
{h(n); nhb ≤ n ≤ nhe}
Adalah
dua durasi tertentu suatu sekuen. Kita lihat bahwa titik awal dan akhir dari
y(n) adalah berturut-turut:
nyb = nxb + nhb
dan nxe + nhe
Perluasa
dan fungsi conv ( disebut conv_m.m) yang melakukan konvolusi dengan dukungan
sekuen yang acak dapat dirancang. Perhatikan berikut ini:
% [y,ny] = conv_m(x,nx,h,nh)
% [y,ny] =
hasil konvolusi
% [x,nx] =
sinyal pertama
% [h,nh] =
sinyal kedua
nyb = nx(1) +
nh(1);
nye =
nx(length(x)) + nh(length(h));
ny =
[nyb;nye];
y = conv(x,h);
Mari kita coba melakukan konvolusi untuk : x(n)
= [3, 11, 7, 0, -1, 4, 2], -3 ≤ n ≤ 3
dan h(n) = [2, 3, 0, -5, 2, 1],
-1≤ n ≤ 4, sebagai berikut:
%----------------------------------------------------------------------
%Nama File :
Konvolusi_1.m
%Oleh
%----------------------------------------------------------------------
x = [3, 11, 7,
0, -1, 4, 2];
nx = [-3:3];
h = [2, 3, 0,
-5, 2, 1];
nh = [-1:4];
[n,ny]=conv(x,nx,h,nh)
Sehingga:
Y(n) = {6, 31, 47,6, -51, -5, 41, 18, -22, -3,
8, 2}
6.3.2 Konvolusi Dua Sinyal Discrete Unit Step
Disini kita akan membangkitkan sebuah sinyal unit step diskrit yang memiliki nilai seperti berikut:
Dan
melakukan operasi konvolusi yang secara matematis dapat dituliskan sebagai
berikut:
x[n]*v[n]
Untuk itu
langkah yang harus dilakukan adalah sebagai berikut:
1. Bangkitkan sinyal x[n] dengan mengetikkan
perintah berikut:
L=input('Panjang gelombang(>=10) : ');
P=input('Lebar pulsa (lebih kecil dari L): ');
%----------------------------------------------------------------------
%Nama File :
Konvolusi_2.m
%Oleh :Tri Budi Santoso, Miftahul Huda, Hary Octvianto
%----------------------------------------------------------------------
%Sinyal x(n)
for n=1:L
if n<=P
x(n)=1;
else
x(n)=0;
end
end
t=1:L;
subplot(3,1,1)
stem(t,x)
2.
Jalankan program dan tetapkan nilai L=20 dan P=10.
3. Selanjutnya masukkan pembangkitan
sekuen unit step ke dua dengan cara menambahkan syntax berikut ini di bawah
program anda pada langkah pertama:
%Sinyal v(n)
for n=1:L
if n<=P
v(n)=1;
else
v(n)=0;
end
end
t=1:L;
subplot(3,1,2)
stem(t,v)
4. Coba
jalankan program dan tambahkan perintah berikut:
subplot(3,1,3)
stem(conv(x,v)) %Konvolusi sinyal: x(n)*v(n)
5. Coba anda jalankan seperti pada langkah
kedua, dan apakah hasilnya seperti ini?
Gambar 6.2. Contoh Hasil Konvolusi
6. Ulangi langkah ke 5 dan rubahlah nilai untuk L=12,
15, dan 12.
Sedangkan untuk P masukkan nilai 10, 5, dan 12, apa
yang terjadi?
6.3.3 Konvolusi Dua Sinyal Sinus
Di sini kita mencoba untuk
membangkitkan dua sinyal sinus dan melakukan operasi konvolusi untuk keduanya.
Langkah yang harus anda lakukan adalah sebagai berikut:
1. Buat
program untuk membangkitkan dua gelombang sinus seperti berikut:
- L =input('Banyaknya titik sampel(>=20): ');
- f1 =input('Besarnya frekuensi gel 1 adalah Hz: ');
- f2 =input('Besarnya frekuensi gel 2 adalah Hz: ');
- teta1=input('Besarnya fase gel 1(dalam radiant): ');
- teta2=input('Besarnya fase gel 2(dalam radiant): ');
- A1 =input('Besarnya amplitudo gel 1: ');
- A2 =input('Besarnya amplitudo gel 2: ');
%----------------------------------------------------------------------
%Nama File :
Konvolusi_3.m
%Oleh :Tri Budi Santoso, Miftahul Huda, Hary Octvianto
%----------------------------------------------------------------------
%Sinus pertama
t=1:L;
t=2*t/L;
y1=A1*sin(2*pi*f1*t
+ teta1*pi);
subplot(3,1,1)
stem(y1)
%SInus kedua
t=1:L;
t=2*t/L;
y2=A2*sin(2*pi*f2*t
+ teta2*pi);
subplot(3,1,2)
stem(y2)
2. Coba anda jalankan program anda dan isikan
seperti berikut ini:
Banyaknya titik sampel(>=20): 20
Besarnya frekuensi gel 1 adalah Hz: 1
Besarnya frekuensi gel 2 adalah Hz: 0.5
Besarnya fase gel 1(dalam radiant): 0
Besarnya fase gel 2(dalam radiant): 0.5
Besarnya amplitudo gel 1: 1
Besarnya amplitudo gel 2: 1
Perhatikan tampilan yang dihasilkan. Apakah ada
kesalahan pada program anda?
3. Lanjutkan
dengan menambahkan program berikut ini pada bagian bawah program yang anda buat
tadi.
subplot(3,1,3)
stem(conv(y1,y2))
4. Jalankan program anda, dan kembali lakukan
pengisian seperti pada langkah ke 3. Lihat hasilnya apakah anda melihat
tampilan seperti berikut?
Gambar 6.3. Contoh
Hasil Konvolusi Dua Sinyal Sinus
5. Ulangi langkah ke 4, dengan
menetapkan nilai sebagai berikut: L=50. w1=w2=2, teta1=1.5, teta2=0.5, dan
A1=A2=1. Apa yang anda dapatkan? Apakah anda mendapatkan hasil yang berbeda
dari program sebelumnya? Mengapa ?
6.3.4
Konvolusi Sinyal Bernoise dengan Raise
Cosine
Sekarang kita mulai mencoba utnuk lebih jauh
melihat implementasi dari sebuah operasi konvolusi. Untuk itu ikuti
langkah-langkah berikut.
1.
Bangkitkan sinyal raise cosine dan sinyal sinus dengan program berikut.
%----------------------------------------------------------------------
%Nama File :
Konvolusi_3.m
%Oleh :Tri Budi Santoso, Miftahul Huda, Hary Octvianto
%----------------------------------------------------------------------
%convolusi
sinyal sinus bernoise dengan raise cosine;
n=-7.9:.5:8.1;
y=sin(4*pi*n/8)./(4*pi*n/8);
figure(1);
plot(y,'linewidth',2)
t=0.1:.1:8;
x=sin(2*pi*t/4);
figure(2);
plot(x,'linewidth',2)
Gambar 6.4. Sinyal Raise Cosine
Gambar 6.5. Sinyal Sinus Asli
2. Tambahkan noise pada sinyal sinus.
t=0.1:.1:8;
x_n=sin(2*pi*t/4)+0.5*randn*sin(2*pi*10*t/4)+,...
0.2*randn*sin(2*pi*12*t/4);
figure(3);
plot(x_n,'linewidth',2)
Gambar 6.6. Sinyal
Sinus Bernoise
3. Lakukan konvolusi sinyal sinus bernoise dengan raise cosine, perhatikan apa yang terjadi?
xy=conv(x_n,y);
figure(4);
plot(xy,'linewidth',2)
Gambar 6.7. Hasil Konvolusi
4.
Coba anda lakukan perubahan pada nilai sinyal raise cosine dengan mengurangi
rentang nilai pada n, bisa anda buat lebih pendek atau lebih panjang, dan
ulangi lagi langkah 3, catat apa yang terjadi.
6.3.5 Konvolusi Pada Sinyal Audio
Coba kita lihat bersama
bagaimana pengaruh operasi konvolusi pada sinyal audio, dalam hal ini kita
ulangi permainan seperti pada modul sebelumnya. Untuk itu ikuti langkah berikut.
- Buat sebuah program baru sebagai brikut:
%----------------------------------------------------------------------
%Nama
File : Konvolusi_4.m
%Oleh :Tri Budi Santoso, Miftahul Huda, Hary Octvianto
%----------------------------------------------------------------------
%convolusi_1.m
clear all;
[Y,Fs] = wavread('lagu_1_potong.wav');
Fs = 16000;%nilai default Fs=16000
sound(Y,Fs)
Apa yang
anda dapatkan?
2.
Beri tanda % pada sound(Y,Fs) untuk membuatnya tidak diekesekusi oleh Matlab, sehingga
menjadi % sound(Y,Fs). Kemudian tambahkan perintah berikut.
nois = randn(length(Y),1);
Y_noise = Y + 0.08*nois;
sound(Y_noise,Fs)
Coba amati lagi apa yang
terjadi?
3. Buat perintah sound tidak aktif, kemudian
bangkitkan sebuah sinyal yang bernilai 1 dengan cara seperti berikut.
satu = ones(4,1);
4. Lakukan operasi konvolusi dan dengarkan
hasilnya pada speaker anda
Y_c = conv(satu,Y_noise);
sound(Y_c,Fs)
6.4. Analisa Data
Setelah anda melakukan
praktikum dengan sukses, ada satu hal yang selalu anda harus lakukan, yaitu
membuat dokumentasi dari pekerjaan anda. Untuk itu cobalah anda catat semua
yang telah anda lakukan dan jawablah beberapa pertanyaan berikut ini:
1. Bagaimana bentuk dasar dari sebuah operasi
konvolusi ?
2. Apa pengaruh operasi konvolusi pada sinyal sinus
bernoise ?
3.
Dimana pemakaian operasi konvolusi pada system yang pengolah audio?
6.5. Tugas
1. Demonstrasikan sebah aplikasi crosscorrelation menggunakan program
MATLAB jika diketahui:
X(n) = [3, 11,
7, 0,-1, 4, 2]
Adalah prototipe
sekuen dan misalkan y(n) adalah versi
noise-corrupted and shifted-nya;
Y(n) =
x(n-2)-W(n)
Dengan W(n)
adalah sekuen Gaussian dengan rata-rata (mean) 0 dan varian 1. Hitug crosscorrelation antara y(n) dan x(n)
2.
Misalkan pulsa rectangular x(n) = u(n) – u(n-10) dijadikan sebagai masukan pada
sistem LTI dengan impulse respon
h(n)
= (0,9)n u(n)
Tentukan
keluaran y(n) dan plot hasil impulse x(n) fungsi respon (h(n)) dan keluaran
(y(n)) dan diskusikan hasilnya.
3.
Diberikan dua sekuen sebagai berikut:
x(n)
= [3, 11, 7, 0, -1, 4, 2] , -3 ≤n≤ 3; dan h(n) = [2, 3, 0, -5, 2, 1], -1 ≤n≤ 4
tentukan
konvolusi y(n) = x(n)*h(n)