View
437
Download
31
Category
Preview:
Citation preview
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
1
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.
-3 -2 -1 0 1 2 3-2
0
2
4
6
8
10
12
x(n)
62037011)5(3
]1[][)1(
=×+×+×+−×=
−−=− ∑k
khkxy
2
4122340)1()5(027111
]2[][)2(
=×+×+×−+−×+×+×=
−= ∑k
khkxy
-1 -0.5 0 0.5 1 1.5 2 2.5 3 3.5 4-5
-4
-3
-2
-1
0
1
2
3h(n)
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
3
ny = [-4 -3 -2 -1 0 1 2 3 4 5 6 7]
Hasil konvolusi dapat digambarkan sbb:
-4 -2 0 2 4 6 8-60
-40
-20
0
20
40
60hasil konvolusi, y[n]
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; % membersihkan semua variabel clc; % membersihkan editor command window x = [3 11 7 0 -1 4 2]; % isyarat x[n] h = [2 3 0 -5 2 1]; % isyarat h[n] y = conv(x,h) % operasi konvolusi y[n]=x[n]*h[n]
Hasil eksekusi program tsb adalah
4
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 [y ny] = conv_m(x,nx,h,nh) % Fungsi untuk memodifikasi rutin konvolusi conv % [y ny] = hasil konvolusi % [x nx] = sinyal pertama % [h nh] = sinyal kedua nyb = nx(1) + nh(1) % n terendah dari y[n] nye = nx(length(x)) + nh(length(h)) % n tertinggi dari y[n] ny = [nyb:nye] % jaungkauan n dari y[n] y = conv(x,h) % mencari y[n]= x[n]*h[n] 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; % membersihkan semua variabel clc; % membersihkan editor x = [3 11 7 0 -1 4 2]; % isyarat x[n] nx = [-3:3]; % jangkauan x[n] h = [2 3 0 -5 2 1]; % isyarat h[n] nh = [-1:4]; % jangkauan h[n] [y ny] = conv_m(x, nx, h, nh) % konvolusi y[n]=x[n]*h[n] stem(ny, y) % menggambar y[n] Hasil eksekusi program sama dengan hasil konvolusi yang telah dilakukan di atas.
5
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
∑∞
−∞=
−=n
yx nynxr ][][)(, ll (8.1)
Indeks l disebut parameter pergeseran. Jika y[n] = x[n] maka diperoleh autokorelasi dan
dinyatakan sbg
∑∞
−∞=
−=n
xx nxnxr ][][)( ll (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
∑∞
−∞=
−=
=
kknhkx
nhnxny
][][
][*][][ (8.3)
Dengan membandingkan ketiga persamaan di atas, maka kros-korelasi dapat dinyatakan
kembali dalam bentuk
)(*)()( lll −= xyryx (8.4)
Dan autokorelasi dapat dinyatakan dalam bentuk
)(*)()( lll −= xxrxx (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]; % sinyal x[n] nx = [-3:3]; % jangkauan n dari x[n] [y ny] = sigshift(x,nx,2); % menggeser x[n] sebanyak 2 satuan w = randn(1,length(y)); % membangkitkan derau Gaussian nw = ny; % panjang w[n] = panjang y[n] [y ny] = sigadd(y,ny,w,nw); % menambahkan sinyal y[n] dan w[n] [x nx] = sigfold(x,nx); % membalikkan sinyal x[n] [rxy nrxy] = conv_m(y,ny,x,nx); % mencari kros-korelasi x[n] & y[n] stem(nrxy,rxy) % menggambar hasil kros-korelasi axis([-5,10,-50,250]) xlabel('variabel pergeseran l') ylabel('rxy') title('Kros-korelasi x[n] dan y[n]')
Hasil eksekusi program:
-5 0 5 10-50
0
50
100
150
200
250
variabel pergeseran l
rxy
Kros-korelasi x[n] dan y[n]
7
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)
8
Recommended