Membuat Envelope Dari Isyarat Dengan Kerapatan Besar Menggunakan Matlab
-
Upload
jans-hendry -
Category
Documents
-
view
143 -
download
0
Transcript of 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:
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
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:
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);
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
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 ~~