Anda di halaman 1dari 8

TEKNIK PENGOLAHAN ISYARAT DIGITAL

Kuliah 8 KONVOLUSI DAN KORELASI

Indah Susilawati, S.T., M.Eng.

Program Studi Teknik Elektro Program Studi Teknik Informatika Fakultas Teknik dan Ilmu Komputer Universitas Mercu Buana Yogyakarta 2009

Kuliah 8 Teknik Pengolahan Isyarat Digital Teknik Elektro UMBY

KONVOLUSI DAN KORELASI


Contoh 1: Diberikan dua isyarat diskrit sbb x[n] = [3 11 7 0 -1 4 2] dengan -3 n 3 dan h[n] = [2 3 0 -5 2 1] dengan -1 n 4 maka tentukanlah konvolusi kedua isyarat yaitu y[n] = x[n] * h[n] Penyelesaian: Kedua isyarat dapat digambarkan pada kedua gambar berikut ini.
12 x(n) 10

-2 -3

-2

-1

y (1) = x[k ]h[1 k ]


k

= 3 ( 5) + 11 0 + 7 3 + 0 2 =6

y (2) = x[k ]h[2 k ]


k

= 11 1 + 7 2 + 0 (5) + (1) 0 + 4 3 + 2 2 = 41
3 h(n) 2 1 0 -1 -2 -3 -4 -5 -1

-0.5

0.5

1.5

2.5

3.5

Dengan mencari semua nilai y[n] yang ada maka akan dihasilkan isyarat y[n] sbb: y[n] = [6 31 47 6 -51 -5 41 18 -22 -3 8 2] Bilangan bergaris bawah menyatakan data yang berada pada posisi n = 0. Untuk mencari nilai n terendah dan tertinggi pada y[n] dimana y[n] ada digunakan rumus nyb = nxb + nhb nye = nxe + nhe dengan nyb : nilai n terendah pada y[n] nye : nilai n tertinggi pada y[n] nxb : nilai n terendah pada x[n] nxe : nilai n tertinggi pada x[n] nhb : nilai n terendah pada h[n] nhe : nilai n tertinggi pada h[n] Sehingga dapat diketahui nyb = -3 + (-1) = -4 nye = 3 + 4 = 7 atau

ny = [-4 -3 -2 -1 0 1 2 3 4 5 6 7]

Hasil konvolusi dapat digambarkan sbb:


60 hasil konvolusi, y[n] 40

20

-20

-40

-60 -4

-2

Contoh soal di atas dapat diselesaikan menggunakan bantuan program Matlab. Matlab menyediakan fungsi untuk melakukan operasi konvolusi yaitu conv.m. Sintaks penulisannya adalah y = conv(x,h) dengan y adalah hasil konvolusi, x dan h adalah dua isyarat yang dikonvolusikan. Untuk contoh soal di atas dapat diselesaikan dengan program Matlab sbb.
% Konvolusi menggunakan Matlab % x[n] = [3 11 7 0 -1 4 2] % h[n] = [2 3 0 -5 2 1] clear all; clc; x = [3 11 7 0 -1 4 2]; h = [2 3 0 -5 2 1]; y = conv(x,h) % % % % % membersihkan semua variabel membersihkan editor command window isyarat x[n] isyarat h[n] operasi konvolusi y[n]=x[n]*h[n]

Hasil eksekusi program tsb adalah

y = 6 31 47 6 -51 -5 41 18 -22 -3 8 2

Namun Matlab menganggap bahwa semua isyarat dimulai pada saat n = 0, dan pada kenyataannya tidak selalu demikian (seperti pada contoh soal di atas). Untuk mengetahui pewaktuannya maka dapat digunakanrumus untuk mencari nilai n terendah dan tertinggi pada y[n] seperti telah dijelaskan di atas. Dapat dibuat fungsi untuk melakukan operasi konvolusi sekaligus mengetahui pewaktuannya.
function % Fungsi % [y ny] % [x nx] % [h nh] [y ny] = conv_m(x,nx,h,nh) untuk memodifikasi rutin konvolusi conv = hasil konvolusi = sinyal pertama = sinyal kedua % % % % n terendah dari y[n] n tertinggi dari y[n] jaungkauan n dari y[n] mencari y[n]= x[n]*h[n]

nyb = nx(1) + nh(1) nye = nx(length(x)) + nh(length(h)) ny = [nyb:nye] y = conv(x,h)

Fungsi yang telah dibuat dapat dipanggil dalam program lain, seperti contoh berikut untuk memanggil fungsi conv_m.m.
% Konvolusi menggunakan fungsi yang telah dimodifikasi % x[n] = [3 11 7 0 -1 4 2] % h[n] = [2 3 0 -5 2 1] clear all; clc; x = [3 11 7 0 -1 4 2]; nx = [-3:3]; h = [2 3 0 -5 2 1]; nh = [-1:4]; [y ny] = conv_m(x, nx, h, nh) stem(ny, y) % % % % % % % % membersihkan semua variabel membersihkan editor isyarat x[n] jangkauan x[n] isyarat h[n] jangkauan h[n] konvolusi y[n]=x[n]*h[n] menggambar y[n]

Hasil eksekusi program sama dengan hasil konvolusi yang telah dilakukan di atas.

KORELASI ANTARA DUA SEKUENS


Korelasi adalah operasi yang digunakan dalam berbagai aplikasi dalam bidang pengolahan isyarat secara digital. Korelasi merupakan ukuran derajat kesamaan antara dua isyarat atau sekuens. Jika diketahui x[n] dan y[n] dengan energi yang terbatas maka kros-korelasi antara x[n] dan y[n] didefinisikan sbb
rx , y (l) =

n =

x[n] y[n l]

(8.1)

Indeks l disebut parameter pergeseran. Jika y[n] = x[n] maka diperoleh autokorelasi dan dinyatakan sbg
rxx (l) =

n =

x[n]x[n l]

(8.2)

Autokorelasi menyatakan ukuran kesamaan terhadap dirinya sendiri (antara beberapa penjajaran yang berbeda). Konvolusi antara dua isyarat x[n] dan h[n] dinyatakan sbb
y[ n] = x[n] * h[n] =
k =

x[k ]h[n k ]

(8.3)

Dengan membandingkan ketiga persamaan di atas, maka kros-korelasi dapat dinyatakan kembali dalam bentuk
ryx (l) = y (l) * x( l)

(8.4)

Dan autokorelasi dapat dinyatakan dalam bentuk rxx (l) = x(l) * x(l) (8.5)

Hal ini berarti bahwa korelasi dapat dihitung menggunnakan operasi konvolusi jika isyarat atau sekuens merupakan sekuens dengan durasi yang berhingga.

Contoh 2: Jika x[n] = [3 11 7 0 1 4 2] dan y[n] adalah isyarat x[n] yang telah bergeser dan

tercampur derau yang dinyatakan dengan y[n] = x[n 2] w[n], dengan w[n] adalah derau Gaussian dengan rerata nol dan varians 1. Tentukan kros-korelasi antara y[n] dan x[n]. 6

Penyelesaian: Dengan memperhatikan isyarat y[n] maka dapat diperkirakan bahwa y[n] adalah sangat mirip dengan x[n-2] dan dengan demikian dapat diperkirakan pula bahwa kros-korelasi akan memperlihatkan kesamaan tertinggi saat l = 2.

% Menghitung korelasi antara dua sekuens % x[n] = [3 11 7 0 -1 4 2] % y[n] = x[n-2] + w[n] clear all; clc; x = [3 11 7 0 -1 4 2]; % nx = [-3:3]; % [y ny] = sigshift(x,nx,2); % w = randn(1,length(y)); % nw = ny; % [y ny] = sigadd(y,ny,w,nw); % [x nx] = sigfold(x,nx); % [rxy nrxy] = conv_m(y,ny,x,nx); % stem(nrxy,rxy) % axis([-5,10,-50,250]) xlabel('variabel pergeseran l') ylabel('rxy') title('Kros-korelasi x[n] dan y[n]')

sinyal x[n] jangkauan n dari x[n] menggeser x[n] sebanyak 2 satuan membangkitkan derau Gaussian panjang w[n] = panjang y[n] menambahkan sinyal y[n] dan w[n] membalikkan sinyal x[n] mencari kros-korelasi x[n] & y[n] menggambar hasil kros-korelasi

Hasil eksekusi program:


Kros-korelasi x[n] dan y[n] 250

200

150

rxy

100

50

-50 -5

0 variabel pergeseran l

10

Gambar hasil perhitungan menunjukkan bahwa kros-korelasi tertinggi pada saat l = 2.

Berikut adalah fungsi-fungsi yang digunakan pada program penyelesaian contoh 2.


% % % % Membuat fungsi untuk menggeser sinyal x[n] y[n] = x[n-n0] m adalah jangkauan sinyal x[n] n0 adalah besarnya pergeseran

function [y n]=sigshift(x,m,n0) n = m + n0; y = x

% % % % %

Membuat fungsi untuk menambah sinyal x1[n] dan x2[n] y[n] = x1[n]+x2[n] n adalah jangkauan sinyal y[n] n1 adalah jangkauan sinyal x1[n] n2 adalah jangkauan sinyal x2[n]

function [y n]=sigadd(x1,n1,x2,n2) n = (min(min(n1),min(n2)):max(max(n1),max(n2))); y1 = zeros(1,length(n)); y2 = y1; y1(find((n>=min(n1))&(n<=max(n1))==1))=x1 y2(find((n>=min(n2))&(n<=max(n2))==1))=x2 y = y1 + y2

% Membuat fungsi untuk membalik sinyal x[n] % y[n] = x[-n] % n adalah jangkauan sinyal x[n] function [y n]=sigfold(x,n) y = fliplr(x); n = -fliplr(n)