membuat envelope dari isyarat dengan kerapatan besar menggunakan matlab

6
 1 ( ) . 1. : ://..// 2. : ://..// . (). . . . , :

Upload: jans-hendry

Post on 06-Jul-2015

136 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Membuat Envelope Dari Isyarat Dengan Kerapatan Besar Menggunakan Matlab

5/7/2018 Membuat Envelope Dari Isyarat Dengan Kerapatan Besar Menggunakan Matlab - slidepdf.com

http://slidepdf.com/reader/full/membuat-envelope-dari-isyarat-dengan-kerapatan-besar-menggunakan-matlab 1/6

 

[Jans Hendry / EE UGM Yogyakarta, Indonesia] 

1

MEMBUAT ENVELOPE DARI ISYARAT DENGAN KERAPATAN

BESAR MENGGUNAKAN MATLAB

Envelope atau amplop (artinya jadi wagu ya? ☺) merupakan tampilan isyarat itu sendiri berdasarkan

nilai-nilai puncak ekstrim nya lalu dihubungkan satu demi satu secara berturutan.

Gambar 1. Contoh envelope pada isyarat tidak acak

Source: http://en.wikipedia.org/wiki/Envelope_detector

Gambar 2. Contoh envelope pada isyarat acak dan kerapatan tinggi

Source: http://en.wikipedia.org/wiki/Envelope_detector

Salah satu manfaat envelope adalah untuk menentukan konstanta pelemahan eksponensial. Envelope

bisa juga digunakan untuk menjelaskan bentuk isyarat yang tampak tidak periodis dan ajek (tetap).

Sehingga perlu bentuk lain sebagai presentasi dari isyarat asli. Sehingga kita dapat menggambarkan

secara kasar bentuk isyarat tersebut.

Envelope ini sering ditemui dalam teori telekomunikasi. Secara elektronis, kehadiran envelope dapat

dideteksi dengan rangkaian berikut ini:

Page 2: Membuat Envelope Dari Isyarat Dengan Kerapatan Besar Menggunakan Matlab

5/7/2018 Membuat Envelope Dari Isyarat Dengan Kerapatan Besar Menggunakan Matlab - slidepdf.com

http://slidepdf.com/reader/full/membuat-envelope-dari-isyarat-dengan-kerapatan-besar-menggunakan-matlab 2/6

 

[Jans Hendry / EE UGM Yogyakarta, Indonesia] 

2

Gambar 3. Rangkaian untuk mendeteksi envelope isyarat

Pada kasus ini, akan dibahas mengenai simulasi pembentukan envelope dari isyarat suara yang tentu saja sifatnya ajek (tetap).

Tujuan nya adalah untuk mencari nilai konstanta eksponensial untuk menjadi nilai estimasi pelemahan ideal dari isyarat awal.

Perhatikan isyarat suara berikut:

Gambar 4. Isyarat Asli Rekaman Suara dari Alat Musik Jawa

Tampak bahwa isyarat di atas memiliki bentuk yang bagus (yah setidaknya ada pola ☺). Untuk

menentukan konstanta pelemahan eksponensial tidak dibutuhkan titik yang banyak. Cukup 1 titik saja.

Tapi untuk melihat envelopenya bisa digunakan sebanyak 10-20 titik. Dengan demikian akan dihasilkan

sebuah isyarat yang menyelemuti isyarat asli. Untuk menemukan titik-titik ekstrim dari sebuah isyarat

seperti di atas, sebenarnya sangat mudah. Cukup dengan membandingkan 3 titik awal, titik yang akan

menjadi bagian dari pembentuk envelope tentu titik yang ke-2 asalkan dia memenuhi syarat bahwa

nilainya lebih besar dari tetangga nya sejauh 1 unit. Persyaratan tersebut berlaku untuk isyarat yang

bernilai positif, bila untuk bagian negatif maka perlu diubah sedikit. Seharusnya titik yang terpilih juga

Page 3: Membuat Envelope Dari Isyarat Dengan Kerapatan Besar Menggunakan Matlab

5/7/2018 Membuat Envelope Dari Isyarat Dengan Kerapatan Besar Menggunakan Matlab - slidepdf.com

http://slidepdf.com/reader/full/membuat-envelope-dari-isyarat-dengan-kerapatan-besar-menggunakan-matlab 3/6

 

[Jans Hendry / EE UGM Yogyakarta, Indonesia] 

3

merupakan titik di tengah atau titik yang ke-2 tapi dengan syarat bahwa nilainya harus lebih kecil

dibanding dengan tetangga nya di kiri dan kanan sejauh 1 unit.

Untuk algoritma tersebut, akan memakan waktu cukup lama. Instruksi matlab nya adalah sebagai

berikut:

if (y_post(n)<=y_post(n+1)) && (y_post(n+1)>=y_post(n+2))

tmp(n+1)=y_post(n+1); ttmp(n+1)=t_post(n+1); 

else tmp(n+1)=0; ttmp(n+1)=0; 

end 

hasil eksekusinya adalah:

Gambar 5. Envelope dari isyarat asli

Tampak bahwa kerapatan isyarat menyebabkan envelope yang terbentuk menjadi rapat dan

ketidakteraturan beberapa komponen isyarat (amplitudenya) menyebabkan envelope berbentuk tidak

hanya pada bagian luarnya saja tapi tampaknya juga berada di bagian dalam dari isyarat aslinya. Untuk

itu perlu dilakukan filter secara berulang-ulang untuk mendapatkan data paling ekstrim dari isyarat asli.

Berikut ini program lengkap yang bisa digunakan:

Page 4: Membuat Envelope Dari Isyarat Dengan Kerapatan Besar Menggunakan Matlab

5/7/2018 Membuat Envelope Dari Isyarat Dengan Kerapatan Besar Menggunakan Matlab - slidepdf.com

http://slidepdf.com/reader/full/membuat-envelope-dari-isyarat-dengan-kerapatan-besar-menggunakan-matlab 4/6

 

[Jans Hendry / EE UGM Yogyakarta, Indonesia] 

4

clear all; close all; clc; 

filename='1.wav'; y=wavread(filename); 

%% Mencari konstanta pelemahan for m=1:round(length(y)) 

if y(m)>0 y_post(m)=y(m); t_post(m)=m; 

elseif y(m)<0 y_negt(m)=y(m); t_negt(m)=m; 

else y_negt(m)=0; t_negt(m)=0; y_post(m)=0; t_post(m)=0; 

end end %% 

% untuk bagian positif jum_uji=3; k=0; while k<=jum_uji 

for n=1:length(y_post)-2 if (y_post(n)<=y_post(n+1)) && (y_post(n+1)>=y_post(n+2))

tmp(n+1)=y_post(n+1); ttmp(n+1)=t_post(n+1); 

else tmp(n+1)=0; ttmp(n+1)=0; 

end 

end bar1 = find(tmp~=0); bar2 = find(ttmp~=0); y_post=[0 tmp(bar1)]; t_post=[0 ttmp(bar2)]; tmp=[]; ttmp=[]; 

k=k+1; end y_post=y_post(y_post~=0); t_post=t_post(t_post~=0); figure, plot(1:length(y),y,’g’,t_post,y_post,’r’); hold on; 

% untuk bagian negative k=0; while k<=jum_uji 

for n=1:length(y_negt)-2 if (y_negt(n)>=y_negt(n+1)) && (y_negt(n+1)<=y_negt(n+2))

tmp(n+1)=y_negt(n+1); 

Page 5: Membuat Envelope Dari Isyarat Dengan Kerapatan Besar Menggunakan Matlab

5/7/2018 Membuat Envelope Dari Isyarat Dengan Kerapatan Besar Menggunakan Matlab - slidepdf.com

http://slidepdf.com/reader/full/membuat-envelope-dari-isyarat-dengan-kerapatan-besar-menggunakan-matlab 5/6

 

[Jans Hendry / EE UGM Yogyakarta, Indonesia] 

5

ttmp(n+1)=t_negt(n+1); else 

tmp(n+1)=0; 

ttmp(n+1)=0; end 

end bar1 = find(tmp~=0); bar2 = find(ttmp~=0); y_negt=[0 tmp(bar1)]; t_negt=[0 ttmp(bar2)]; tmp=[]; ttmp=[]; k=k+1; 

end y_negt=y_negt(y_negt~=0); t_negt=t_negt(t_negt~=0); 

plot(t_negt,y_negt,’r’); title(‘Envelope Isyarat Asli’,’fontsize’,14); xlabel(‘waktu (t)’); ylabel(‘Amplitude’); hold off; 

Dengan mengatur nilai  jum_uji sebesar yang anda inginkan. Dalam hal ini diberikan nilai 3. Dengan

demikian hasil eksekusinya adalah

Gambar 6. Envelope dari isyarat asli setelah diberikan perulangan

Page 6: Membuat Envelope Dari Isyarat Dengan Kerapatan Besar Menggunakan Matlab

5/7/2018 Membuat Envelope Dari Isyarat Dengan Kerapatan Besar Menggunakan Matlab - slidepdf.com

http://slidepdf.com/reader/full/membuat-envelope-dari-isyarat-dengan-kerapatan-besar-menggunakan-matlab 6/6

 

[Jans Hendry / EE UGM Yogyakarta, Indonesia] 

6

Tampak bahwa envelope yang dihasilkan lebih mulus bila dibandingkan dengan hasil awal. Tentu saja

akan membutuhkan waktu yang lebih banyak. Namun hal tersebut bisa disiasati dengan mengambil data

tertentu saja, karena data ini pada dasarnya mengalami perulangan frekuensi tapi dengan nilai

amplitude yang mengalami gradasi atau penurunan. Dengan demikian data yang diambil bisa

merepresentasikan data original.

Tentu saja jika data yang digunakan dalam jumlah sedikit, waktu yang digunakan juga lebih sedikit.

Bila program di atas lebih rumit, maka sebenarnya bisa juga digunakan program yang lebih singkat. Cara

kerja nya adalah dengan mengambil nilai logic dari perbedaan tanda dari selisih antara nilai-nilai yang

menjadi komponen isyarat tersebut. Perhatikan code berikut ini:

%% Mencari nilai maksimum y_max = y(find(diff(sign(diff(y)))==-2)+1); t_max = t(find(diff(sign(diff(y)))==-2)+1); 

%% Mencari nilai minimum y_min = y(find(diff(sign(diff(y)))==+2)+1); t_min = t(find(diff(sign(diff(y)))==+2)+1); 

%% Menampilkan isyarat asli dan envelope plot(t,y,t_max,y_max,'r',t_min,y_min,'r'); title('Envelope untuk Pak Ari Santoso','FontSize',14'); xlabel('waktu (t)');

 ylabel('Amplitude'); 

program di atas juga menghasilkan nilai akhir envelope yang sama. Tapi dengan bantuan toolbox matlab.

Untuk mendapatkan envelope dari isyarat yang telah saya contohkan di atas, juga perlu diberikan

perulangan. Sehingga hasilnya merupakan nilai envelope yang mulus.

Anda bisa membandingkan hasil keduanya.

~~ TERIMA KASIH ~~