Pengolahan Sinyal Digital dengan Matlab
Sinopsis
Contents
Daftar Isi
- Dasar-Dasar Pengolahan Sinyal Digital
- Teknik Pemisahan Sinyal Digital
- Apa itu Additve White Gaussian Noise
Pengertian Frekuensi dan Amplitudo
Frekuensi jumlah getaran yang dihasilkan dalam setiap 1 detik. Rumus Menghitung Frekuensi
dimana
f = Frekuensi dalam satuan Hertz (Hz)
T = Periode dalam satuan detik (detik)
Rumus umum untuk menggambarkan sinyal sinus yaitu
Dimana :
A = Amplitudo
f = besarnya frekuensi (Hz)
atau dalam bentuk lain sinyal memiliki tambahan informasi waktu t = 0 dan terdapat suatu nilai fase φ sehingga rumusan di atas menjadi:
atau dalam bentuk angularnya yaitu
Dimana ω merupakan frekuensi angular yang memiliki satuan radian per detik. Perlu diperhatikan bahwa ω memiliki besar yang sama dengan 2π f. Seperti dilansir dari Wikipedia, ilustrasi dari sinyal untuk 1 periode yaitu
Dalam sinyal diskrit, maka dibutuhkan sebuah sampling rate atau fs (frame rate/second). Misalkan diberikan sebuah informasi berikut
- Periode sebanyak 1 detik (sumbu x)
- Panjang Gelombang 1.5 (sumbu y)
- Jumlah cuplikan sebanyak 50 kali dalam 1 detik (lihat bulatan atas dan bawah)
- Getaran sebanyak 2 kali (sengaja diberikan 2 warna agar terlihat jelas), maka ilustrasinya sebagai berikut
Coba kalian tebak, berapa nilai frekuensi berikut ini?
Nah, penulis kasih tahu, yaitu 1.5x; seperti 2 warna berikut dibawah ini
Tentu sangat mudah ‘menebak’ sinyal ideal diatas, karena pada kenyataannya akan terdapat sekali noise dan ribuan Hz dalam 1 detik sehingga sangat sulit menentukan berapa frekuensinya, seperti contoh dibawah ini
Atau model dibawah ini yang terdiri dari 2 sinyal dengan amplitudo sama yang terdiri dari 2 frekuensi yaitu 150 dan 200 Hz.
Semua grafik diatas ditampilkan sumbu x periode waktu atau disebut domain waktu sehingga tidak terlihat berapa nilai frekuensinya, oleh karena itu diperlukan sebuah domain frekuensi untuk melihat sinyal diatas, seperti berikut ini
Pada sesi ini, kamu sudah sedikit mengetahui mengenai dasar-dasar sinyal. Kamu bisa pelajari pengertian FFT atau fast Fourier transform
clc;clear all;close all; vm = 1.5; %amplitudo fm_a = 150; %frekuensi fm_b = 200; %frekuensi fs = 500; %sampling rate waktu=0 : 1/fs : 1; % 1 detik sinyal_a =vm*sin( 2*pi*fm_a*waktu); % Modulating Signal Waveform sinyal_b =vm*sin( 2*pi*fm_b*waktu); % Modulating Signal Waveform sinyal = sinyal_a+sinyal_b; %penggabungan 2 sinyal figure subplot(1,2,1),plot(waktu,sinyal); grid on xlabel('Periode: 1 detik ','fontsize',18) ylabel('Amplitudo','fontsize',18) title(['2 Sinyal sinus dengan ' num2str(fm_a) ' - ' num2str(fm_b) ' Hz'],'fontsize',18) Y = fft(sinyal); f = fs* ( 0 :( length(Y)-1)/2)/length(Y); sumbu_x = f; sumbu_y = abs ( Y ( 1 : (length(Y)+1)/2)); [value,index]=max(sumbu_y); subplot(1,2,2),plot(sumbu_x,sumbu_y,'linewidth',2); grid on title('Transformasi Forier','fontsize',18) xlabel('frekuensi (Hz)','fontsize',18) hold off;
Fourier Transform
Fourier transform tidak dipengaruhi oleh beberapa sinyal yang digabungkan seperti [A+B] atau [A,B] maksudnya adalah
- [A+B] : sinyal A dan sinyal B berbunyi bersamaan sehingga periode nya 1 detik
- [A,B] : sinyal A dan sinyal B berbunyi berurutan sehingga periodenya menjadi 2 detik
seperti berikut (lihat sumbu x yaitu 1 detik dan 2 detik)
Maka dengan transformasi Fourier, akan menghasilkan domain frekuensi berikut
Fourier Transform atau Transformasi Fourier adalah suatu model transformasi yang memindahkan domain spasial atau domain waktu menjadi domain frekuensi, kamu bisa baca di http://majalah1000guru.net/2014/04/deret-dan-transformasi-fourier/
Kelebihannya adalah: Transformasi Fourier dapat mempermudah analisis terhadap suatu sinyal yang berada dalam suatu sistem.
Kekurangannya adalah: Transformasi Fourier hanya dapat menangkap informasi apakah suatu sinyal memiliki frekuensi tertentu atau tidak, tapi tidak dapat menangkap dimana frekuensi itu terjadi.
Disini tidak dibahas detail rumus mengenai fourier transform atau fast fourier transform karena sudah banyak yang membahas
Sinyal Digital / Diskrit
Sering disebut dengan Analog to Digital Conversion (ADC) proses mengubah amplitudo gelombang bunyi ke dalam waktu interval tertentu (disebut juga sampling), sehingga menghasilkan representasi digital dari suara. Sampling rate: beberapa gelombang yang diambil dalam satu detik. Gelombang suara analog tidak dapat langsung direpresentasikan pada komputer. Komputer mengukur amplitudo pada satuan waktu tertentu untuk menghasilkan sejumlah angka. Tiap satuan pengukuran ini dinamakan sample rate. Pada contoh berikut ada sebuah sinyal analog 4 Hz yang akan dicuplik sebanyak 50 per detik atau bit rate 50 Hz.
Tahapan dari analog ke digital yaitu
- Membuang frekuensi tinggi dari source signal
- Mengambil sample pada interval waktu tertentu (sampling)
- Menyimpan amplitudo sample dan mengubahnya dalam bentuk diskrit
- Mengubah bentuk menjadi nilai biner
Berikut tabel range frekuensi dari suara
BITRATE/CUPLIKAN
Sekarang kamu sudah paham mengenai sinyal digital dan suara digital, sekarang kita bahas mengenai format audio yaitu *.wav; sebuah file suara nada piano A#.wav akan tertera informasi berikut
Artinya file tersebut berisikan informasi
- Berjenis stereo (ada 2 grafik atas bawah yaitu bagian suara left dan right)
- Bitrate nya 44100 Hz atau 44.1 KHz
- Durasi 1.90 detik
Dari situ harus tahu bitrate yang digunakan yaitu 44100 Hz, apa itu bit rate? Bitrate adalah banyaknya cuplikan data yang diambil selama 1 detik (jangan dicampur adukan dengan frekuensi sinyal ya, ini sedikit beda), kalau dalam digital image processing yaitu DPI (dot per inchi). Mari kita pahami dengan menggunakan Matlab.
clc;clear all;close all; [y,fs] = audioread('A#1.wav'); if ndims(y)==2 disp('Stereo') else disp('Mono') end jumlah_array = size(y,1); waktu = jumlah_array/fs;
menghasilkan
Stereo jumlah_array = 83960 waktu = 1.9039
Terbukti bahwa file audio tersebut berjenis stereo lihat variabel y yang terdiri dari 2 kolom lebih tepatnya 83960 baris x 2 kolom, dengan bit rate 44100, maka durasi waktunya (play time) ditentukan dengan rumus sebagai berikut
Sehingga waktu\durasi play sebesar 1.9039 detik atau 1.9 detik (sama persis dengan file yang dibuka oleh aplikasi Audacity). Kamu sudah paham ya mengenai bitrate, sehingga semakin tinggi bitrate maka akan semakin banyak data yang disimpan (semakin presisi suaranya dan telinga manusia ada batasnya juga, jadi tidak serta semakin tinggi bit rate nya makin bagus alias kalau sudah terlampau tinggi maka telinga manusia pun sudah tidak terlalu peka/tidak bisa membedakannya)
Dibawah ini adalah domain waktu dari suara nada piano A# (menggunakan matlab) sama koq grafiknya dengan yang diatas, hanya saja dipendekan saja jadi terlihat agak gemuk
Analisis Frekuensi Audio
Kita lanjutin lagi menggunakan Audacity, informasi dari nada A# terdiri dari 3 frekuensi dominan lho, kamu bisa lihat di Audacity dengan cara Analisa -> Spektrum Plot seperti berikut
Atau dengan FFT dari Matlab akan tampil 3 frekuensi dominan untuk suara nada piano A# karena ada 3 tuts yang ditekan secara bersama (ingat pembahasan sebelumnya bahwa sinyal suara yang digabung tidak terlalu berpengaruh pada FFT) sedangkan 2 frekuensi yang kecil-kecil itu tanda noise/getaran/ripple.
Mari kita coba plot grafik dari nada suara piano G# dalam domain waktu
Kalau menggunakan domain frekuensi