[Jans Hendry / EE UGM Yogyakarta, Indonesia

]

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:

1

[Jans Hendry / EE UGM Yogyakarta, Indonesia]

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

2

[Jans Hendry / EE UGM Yogyakarta, Indonesia]

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:

3

[Jans Hendry / EE UGM Yogyakarta, Indonesia]

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);

4

[Jans Hendry / EE UGM Yogyakarta, Indonesia]

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

5

[Jans Hendry / EE UGM Yogyakarta, Indonesia]

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 ~~

6

Sign up to vote on this title
UsefulNot useful