Dalam dunia Pemrosesan Sinyal Digital, ada suatu proses untuk mendapatkan data digital melalui proses pencuplikan, artinya sinyal analog dicuplik (diambil) secara diskrit dengan periode Ts atau frekuensi cuplik Fs. Nah agar tidak terjadi kesalahan (yang kemudian diberi nama aliasing), pak Nyquist memberikan aturan bahwa frekuensi cuplik minimal harus 2 (dua) kali lipat frekuensi maksimum yang dikandung sinyal yang bersangkutan.
Untuk memahami hal tersebut, mari kita persiapkan dulu sinyal sinusoidal dengan frekuensi 2 Hz. Kita gunakan frekuensi cuplik 1000 Hz atau periode 0.001 detik (supaya gambarnya jauh lebih ‘mulus’ dibandingkan dengan eksperimen-eksperimen yang akan kita lakukan)…
>>t=0:0.001:1;
>>f=2;
>>y=sin(2*pi*f*t);
Okey, Anda siap? Konsenterasi… kita awali dengan menyiapkan gambar (perintah figure), kemudian diteruskan dengan menyiapkan variabel waktu t1 dengan frekuensi sampling = frekuensi sinyal (atau periodenya 1/f detik), kita hitung y1-nya kemudian kita gambarkan sinyal asli y dan sinyal hasil pencuplikan y1, menggunakan perintah-perintah berikut…
>>figure;
>>t1=0:1/f:1;
>>y1=sin(2*pi*f*t1);
>>plot(t,y,t1,y1,’-o’);
>>title(sprintf(’frekuensi sampling = frekuensi sinyal, jumlah data %d’,length(y1)));
Hasilnya (yang asli warna biru, yang cuplikan warna hijau)…
Hmmm… apaan tuch (perhatikan garis hijau), kok cuman garis lurus, berarti salah nich… Ya jelas lha wong frekuensi pencuplikan = frekuensi sinyal, harusnya khan 2 kali lipat, coba kita ubah lagi… (gunakan 1/(2*f))
>>figure;
>>t1=0:1/(2*f):1;
>>y1=sin(2*pi*f*t2);
>>plot(t,y,t1,y1,’-o’);
>>title(sprintf(’frekuensi sampling = 2 x frekuensi sinyal, jumlah data %d’,length(y1)));
Hasilnya…
Oalah…. sami mawon, podho wae, sama saja… ya garis lurus lagi (walaupn jumlah datanya bertambah, perhatikan lingkaran-lingkaran hijau, bandingkan dengan gambar sebelumnya)! Loch khan pak Nyquist sudah bilang kalo itu 2 kali lipat adalah minimal, ya mestinya pake yang lebih tinggi lagi, coba sekarang pake 2,5 kali lipat…
>>figure;
>>t1=0:1/(2.5*f):1;
>>y1=sin(2*pi*f*t1);
>>plot(t,y,t1,y1,’-o’);
>>title(sprintf(’frekuensi sampling = 2,5 x frekuensi sinyal, jumlah data %d’,length(y1)));
Hasilnya…
Wah ini agak lumayan (maksudnya dibandingkan hasil-hasil sebelumnya), bukan garis lurus, tapi… belum berbentuk sinusoidal ya…?? Okey kita coba jadi 3 kali lipat…
>>figure;
>>t1=0:1/(3*f):1;
>>y1=sin(2*pi*f*t1);
>>plot(t,y,t1,y1,’-o’);
>>title(sprintf(’frekuensi sampling = 3 x frekuensi sinyal, jumlah data %d’,length(y1)));
Hasilnya…
Kemudian 4 kali lipat…
>>figure;
>>t1=0:1/(4*f):1;
>>y1=sin(2*pi*f*t1);
>>plot(t,y,t1,y1,’-o’);
>>title(sprintf(’frekuensi sampling = 4 x frekuensi sinyal, jumlah data %d’,length(y1)));
Hasilnya…
Kemudian 10 kali lipat…
>>figure;
>>t1=0:1/(10*f):1;
>>y1=sin(2*pi*f*t1);
>>plot(t,y,t1,y1,’-o’);
>>title(sprintf(’frekuensi sampling = 10 x frekuensi sinyal, jumlah data %d’,length(y1)));
Hasilnya…
Kemudian (terakhir, jangan kebanyaken) 20 kali lipat…
>>figure;
>>t1=0:1/(20*f):1;
>>y1=sin(2*pi*f*t1);
>>plot(t,y,t1,y1,’-o’);
>>title(sprintf(’frekuensi sampling = 20 x frekuensi sinyal, jumlah data %d’,length(y1)));
Hasilnya…
Bagaimana? Semakin mendekati sinusoidal aslinya too…?? Cuman jumlah data-nya juga semakin banyak, iya khan? Terus silahkan disimpulkan sendiri, okey? Atau kalo masih penasaran silahkan Anda coba 30, 40, 70 atau bahkan 100 kali lipat… silahkan jika mau…
Silahkan berikan komentar atau pertanyaan Anda…
NB: Sinyal asli sebenarnya menggunakan frekuensi cuplik sebesar 500 kali dari frekuensi 2 Hz (=1000 Hz), jadi wajar saja jika gambarnya halus (banget).














November 24th, 2008 at 11:30 am
Muantep!
Kalo ada yang sudah baca tapi masih belum ngerti juga, berarti…..
perlu baca lagi, tul gak Mas?
Chandra MDE
http://telinks.wordpress.com
November 24th, 2008 at 1:02 pm
iya tul! saya sudah berusaha pake program dan gambar, supaya lebih jelas gitu… trims ya!
December 5th, 2008 at 2:55 pm
keren sekali, saya yang ndak tau apa Pemrosesan Sinyal Digital, kalo jadi dosen di lingkungan saya. Langsung mak nyus
December 9th, 2008 at 9:10 am
trims…
December 23rd, 2008 at 9:48 am
thanks pak…btw,bapak mantan dosen saya lho..(teknik antar muka)
December 23rd, 2008 at 1:14 pm
alhamdulillah, terima kasih…
alhamdulillah masih bisa konek dengan mantan mahasiswa,
now we are friend… he he he…
March 18th, 2009 at 6:59 am
pak mau numpang tanaya..
apakah teorema nyquist ini baerlaku untuk serat optik???
atau hanya serat tembaga saja???
March 18th, 2009 at 7:20 am
teorema Nyquist merupakan aturan dalam pencuplikan data - proses analog to digital - sehingga tidak ada kaitannya dengan medium pembawa data tersebut, apakah udara, kabel, serat optik, serat tembaga, dll
May 11th, 2009 at 9:51 am
Efek nyquist it is ok. Tapi contoh ril nya gimana?
May 11th, 2009 at 9:59 am
@Alexander:
contoh riil bisa Anda lakukan saat melakukan perekaman CD audio ke WAV atau MP3 dengan menurunkan sampelnya menjadi kurang dari 44 kHz (syarat Nyquist) dan Anda dengarkan hasil pencuplikannya…
August 23rd, 2009 at 2:10 am
apakah bisa mengakali penambahan resolusi dari ADC AVR(misal ATMega16) yang di datasheet maksimum dituliskan 10-bit menjadi resolusi 12-bit atau lebih tinggi lagi berdasarkan theorema Nyquist ini?
(btw,pembahasan yang cukup menarik pak..trims infonya)
January 12th, 2010 at 3:36 pm
pak,,gmn caranya cari amplitudo jika inputnya berupa file .wav???
mohon bantuannya….thanx
January 14th, 2010 at 9:02 am
@adiholix:
tidak bisa… sudah dari pabriknya - gunakan ADC eksternal dengan resolusi 12-bit
@tulus:
data WAV dibaca melalui matlab kemudian tampilkan menggunakan instruksi pembacaan data tersebut, di gambar akan ditampilkan amplitudonya…
January 25th, 2010 at 9:19 pm
ohhh gt ya pak,,,tp misal pake J2ME gmn ya pak????
mohon bantuannya…thanx
January 28th, 2010 at 11:03 pm
pak kl bisa bahas tentang teorema sampling juga y…trus implementasi nya menggunakan matlab GUI.thnks..
January 29th, 2010 at 8:23 am
@jefri:
loh disini juga ada teorema samplingnya juga loch, cuman memang tidak eksplisit…