Januari 2013 | Error Code | be a true student

Pages

Subscribe:
No.ProdukBeli
1. Beli... klik di sini

Rabu, 02 Januari 2013

OOP (Object Oriented Programing)

OOP (Object Oriented Programing) atau pemrograman berorientasi objek adalah konsep dari suatu pemrograman yang menganggap semuanya adalah objek. Kita memandang suatu masalah yang nanti temen temen mau buat programnya segala entitasnya adalah objek.
Pada matakuliah OOP saya mempelajarinya dengan menggunakan bahasa JAVA ayo kita ngopi.
Tentang Objek
Objek adalah representasi sebuah item, unit, atau entitas individu yang dapat di identifikasi baik real maupun abstrak. Maksudnya segala sesuatu yang dapat kita rinci masing-masing komponen atau apapun itu dapat dikatakan sebagai objek. 
Dalam Objek terdapat dua komponen yaitu Atribut dan Operasi. Atribut adalah data dalam sistem maksudnya yang melekat pada suatu objek itu disebut atribut. Misal objeknya adalah manusia, manusia mempunyai atribut tangan, baju, kaki, jenis kelamin, rambut dan lain lain. Sedangkan Operasi adalah fungsi yang dipunyai oleh objek tersebut, fungsi ini sering disebut method. Sekarang kita sebut fungsi dengan method ya?. Contoh Method yang dimiliki oleh objek Manusia adalah Makan, Berjalan, Berlari, Menulis dan lain sebagainya. 
beberapa kegunaan Method di antaranya :

  1. Dapat memanipulasi atribut dalam sebuah kelas
  2. Dapat memanggil operasi lain dalam kelas yang lain
  3. Mengirim dan menerima informasi/pesan sebagai parameter.


sudah jelas sampai disini??

oke kita lanjut.

Sekumpulan objek-objek yang sama disebut kelas (class). Semua objek dalam suatu kelas memiliki atribut dan operasi yang sama, tetapi nilai atribut dapat berbeda. Suatu objek tertentu merupakan instance sebuah kelas. Instance adalah buatan dari class, misalnya kit membuat object macan dari class hewan.


Dunia terbuat/tersusun atas objek. Kita tahu tentang objek memiliki attributes. Kita dapat melakukan sesuatu pada objek yaitu karena memiliki operations/Method. Kadang melakukan sesuatu pada objek untuk mengubah atribut-nya. Objek dapat terbuat dari objek yang lebih kecil.Kita dapat mengerti objek besar dengan mengerti bagian-bagian pembentuknya. Objek bekerjasama dengan objek lain untuk mencapai suatu maksud / tujuan.


  1. Dunia terbuat/tersusun atas objek..
    -BUKU
  2. Kita tahu tentang objek (attributes)
    -Judul, pengarang, jumlah halaman, ukuran, ISBN
  3. Kita dapat melakukan sesuatu pada objek
    -Merobek halaman, membacanya
  4. Kadang melakukan sesuatu pada objek mengubah atribut-nya..
    -Mengurangi jumlah halaman, merubah harga, 
  5. Objek terbuat dari objek-objek yang lebih kecil
    -Halaman, cover, index
  6. Kita dapat mengerti objek besar dengan mengerti bagian-bagian pembentuknya..
    -Perpustakaan, periodical, jurnal, buku, e-media
  7. Objek bekerjasama dengan objek lain untuk mencapai suatu maksud / tujuan
    -Pengarang, penerbit, pembaca, buku, perpustakaan

Pada konsep OOP bahwa kita menganggap segala sesuatu adalah objek. Jika kita membuat sistem maka pandangan kita adalah suatu sistem tersebut terbentuk dari kumpulan beberapa objek yang saling berinteraksi. 
Sifat dari OOP adalah modularity. Objek ditulis dan di mainten terpisah dari objek lain. Contoh objek Mobil, Mobil adalah kumpulan sistem pengapian, sistem kemudi, sistem  pengereman.

Pada Konsep OOP ada tiga sifat yang dimiliki yaitu
  1. Encapsulation
    Konsep OOP adalah penyembunyian, maksudnya user tidak perlu tau kerumitan dari susunan sistem tersebut, user hanya cukup tau cara untuk menggunakan sistem tersebut. Contoh AC. AC memiliki operasi / Method ON, OFF dan Pengatur suhu AC. User hanya cukup tahu bagaimana Meng-ON kan AC ataupun meng-OFF kan, user tidak perlu tahu apa yang terjadi dibalik semua itu.
  2. Inheritance
    Konsed ini adlah bahwa suatu objek dapat memiliki atau mewarisi seluruh atribut maupun operasi yang dimiliki oleh suatu objek lain yang lebih besar. misalnya objek Bicycle turunannya adalah mountain bike, Racing bike, tandem bike.
  3. Polymorphism
    Konsep ini adalah objek memiliki banyak bentuk namun memiliki bagian pola yang sama . Misalnya Class bentuk, suatu bentuk memiliki luas, yang termasuk dari class bentuk adalah Lingkaran, persegi, segitiga dll, semua itu memiliki LUAS.







Lanjut baca - OOP (Object Oriented Programing)

Persamaan Perbedaan Filter Iir, Filter Fir Dan Konvolusi


Pada praktikum kali ini kita akan membahas mengenai perbedaan dan persamaan antara IIR (Infinite Impulse Respone), FIR (Finite Impulse Respone) dan konvolusi.
Sebelum kita membahas mengenai IIR terlebih dahulu kita melihat tentang transformasi Z
Gambar sisip 1
untuk transformasi z dapat langsung menggunakan rumus tersebut, transformasi Z adalah mentransformasi dari sinyal waktu diskrit domain waktu menjadi domain frekuensi.
Transformasi Z rasional memiliki pole dan zero, pole adalah harga Z yang menyebabkan   X[z] bernilai Gambar sisip 6   . Sedangkan harga Zero adalah harga Z yang menyebabkan X[z]= 0.
Fungsi rasionalnya adalah
 Gambar sisip 2
Fungsi zero-polenya adalah
Gambar sisip 3
Fungsi All Pole adalah fungsi yang membuat nilai X[z] bernilai Gambar sisip 11, berapapun angkanya jika di bagi 0 akan hasilnya tak hingga berarti fungsi untuk pole adalah bagian penyebut yaitu
Gambar sisip 4
 Fungsi All Zero adalah fungsi yang membuat nilai dari X[z] bernilai 0, berapapun penyebutnya jika yang dibagi adalah 0 maka hasilnya akan selalu 0 oleh karena itu sistem ini menggunakan rumus
 Gambar sisip 5
Jika kita menggunakan perhitungan biasa hasilnya adalah sebagai berikut
Terdapat inputan x[n]={4,3,2,1}, b={1,2,3},c={1,0,0,1}
Gambar sisip 7
Gambar sisip 8
Gambar sisip 9
Gambar sisip 10
Y[n]= b0 x[n]+b1 x[n-1] +b2 x[n-2] ]-a1 y[n-1] -a2 y[n-2] -a3 y[n-3]
Y[n]= x[n]+2 x[n-1] +3 x[n-2] ]-0 y[n-1] -0 y[n-2] -1 y[n-3]            
Proses IIR Filtering
Y[0]= 4+2 .0 +3 .0-0 .0-0 .0 -1 .0=4
Y[1]= 3+2 .4 +3 .0-0 .0-0 .0 -1 .0=11
Y[2]= 2+2 .03+3 .4-0.11-0 .0 -1 .0=20
Y[3]= 1+2 .2+3 .3-0.20 -0.11 -1.4=10
Y[n]={4,11,20,10}
Proses Fir (b,1,x) a tidak digunakan
Y[0]= 4+2 .0 +3 .0=4
Y[1]= 3+2 .4 +3 .0=11
Y[2]= 2+2 .03+3 .4 =20
Y[3]= 1+2 .2+3 .3=14
Y[n]={4,11,20,10,14}
Convolusi(xn,b);
Y[0]= 4+2 .0 +3 .0=4
Y[1]= 3+2 .4 +3 .0=11
Y[2]= 2+2 .03+3 .4 =20
Y[3]= 1+2 .2+3 .3=14
Y[4]= 0+2 .1+3 .2 =8
Y[5]= 0+2 .0+3 .1=3
Y[n]={4,11,20,10,14,8,3}
Kita sudah mencoba untuk menghitung manual tentnag IIR, FIR dan konvolusi apakah hasilnya sama dengan penghitungan menggunakan computer. Berikut adalah hasilnya
xn=[4,3,2,1]
b=[1:3]
a=[1,0,0,1]
%IIR
y=filter(b,a,xn)
%FIR
y1=filter(b,1,xn)
%konvolusi
y2=conv(xn,b)
%hasilnya
y =

     4    11    20    10

y1 =

     4    11    20    14

y2 =

     4    11    20    14     8     3

Yang membedakan antar IIR, FIR dan konvolusi adalah :
1.      IIR masukannya 4 indeks keluarannya juga 4 indeks, begitu juga FIR namun tidak terdapat nilai dari a karena merupakan pole system. Sedangkan konvolusi hasilnya adalah panjangnya jumlah indeks inputan pertama di tambah inputan kedua dikurang 1.
2.      Pada penghitungan kalo IIR dia dikurang dengan penyebutnya juga namun untuk konvolusi dan FIR dia tidak.
3.      IIR merupakan tak terbatas nilainya dan digunakan ketika tidak memedulikan karakteristik linier, sedangkan FIR diperlukan.
Lanjut baca - Persamaan Perbedaan Filter Iir, Filter Fir Dan Konvolusi

TRANSFORMASI FOURIER DISKRIT DENGAN FAST FOURIER TRANSFORM SERTA ALIASING


Bismillah, Asslamualaikum
Pada praktikum kali ini kita akan mempelajari Transformasi Fourier Diskrit (Discret Fourier Transform) menggunakan metode fast fourier transform.
Cos dan sinus dapat di jabarkan sebagai berikut :
Gambar sisip 2
diatas merupakan sinyal analog.
Pada DFT (Discret Fourier Transform) berbeda dengan DTFT (discret time fourier transform), bedanya adalah kalau DFT adalah sinyal diskrit dari domain frekuensi dari 0 sampai dengan 2*pi, sedangkan DTFT adalah sinyal diskrit dari skuen waktu diskrit x(n) pada domain waktu. Di DFT juga mengambil nilai-nilai sebanyak n-point saja. Sedangkan di transformasi fourier untuk sebuah sinyal waktu kontinu x(t) secara matematis di ambil dari Gambar sisip 12
fft merupakan fungsi dari matlab untuk mentransformasikan sinyal domain waktu ke dalam bentuk frekuensi, dengan syntax :
y=fft(x) x dan n akan sama panjang
y=fft(x,n) kita dapamengambil sebanyak n;
Perhitungan Dft Menggunakan Matlab.
Contoh program 1: terdapat frekuensi 150, disampling dengan frekuensi sampling 1000. Kita akan menganalisis sinyal diskrit pada domain n dan pada domain frekuensi programnya adalah seperti di bawah ini.
F=150;
Fs=1000;%frekuensi sampling
nT=0:1/Fs:1;
n=0:length(nT)-1;
r=sin(2*pi*F*nT);
U=abs(fft(r));
frek=(0:length(U)-1)/length(U).*Fs; %untuk menentukan sumbu x nya
figure;subplot(2,1,1);stem(n,r);xlabel('n');ylabel('amplitude');title('Sinyal diskrit');subplot(2,1,2);stem(frek,U);xlabel('Frekuensi');ylabel('|X(F/Fs)|');title('Spektrum frekuansi sinyal diskrit');

nilai nT adalah dari 0 sampai dengan 1 dengan skala 1/FS berarti 1/1000. Sedangkan kita juga membutuhkan n pada sumbu x untuk merepresentasikan sinyal diskrit dengan domain n, n kita ambil adalah dari 0 sampai dengan panjang dari nT-1. Setelah itu kita mendefinisikan sinyal sinusoodal dari sin (2*pi*F*nT), ini merupakan sinyal yang akan kita analisis. Di atas terdapat variabel U adalah untuk mentranformasikan sinyal sinus tadi kedalah bentuk domain frekuensi. Kemudian kita juga membuat deret frekuensi pada sumbu x dengan mengunakan variabel frek dimana panjangnya adalah dari 0 sampai dengan panjang dari U di -1 dai bagi dengan panjang U di kali frekuensi sampling. Kemudian kita gambarka sinyal dari (n,r) untuk domain n dan (frek,U) untuk domain frekuensi. Hasilnya akan seperti gambar di bawah ini :
Gambar sisip 3
Gambar 1. Representasi sinyal diskrit domain x(n) dengan domain frekuensi, dengan frekuensi asli 150 Hz
Dari gambar di atas kita dapat melihat bahwa gambar pertama adalah merepresentasikan sinyal diskrit pada domain n, sedangkan yang bawah adalah sinyal diskrit pada domain frekuensi. Apa pengaruhnya dengan frekuensi?. Itu merupakan pertanyaan yang ada di pikiran kami pada saat praktikum. Pengaruh dari frekuensi adalah pada saat di tampilkan di domain frekuensi dia akan lebih menonjol dibandingkan dengan frekuensi yang lain karena merupakan frekuensi asli. Terlihat pada gambar di atas, frekuensi yang kita gunakan adalah 150 Hz,  maka bagian yang menonjol setelah di transformasikan adalah pada frekuensi 150 dan 850. Kenapa dia berulang di 850?. Karena sinyal dari diskrit yang periodik dia akan berulang sepanjang –F sampai dengan F, dalam hal ini adalah -150 sampai 150, jika skalanya 0 sampai dengan batas atas yakni terhitung 1000 maka gampar pertama muncul di nilai 150 dan gambar ke dua muncul di 1000-150 adalah 850.
Kemudian kita mencoba untuk mengubah frekuensi yang di sampling. Misalnya 300 Hz. Programnya seperti berikut. Contoh program 2 :
F=300;
Fs=1000;%frekuensi sampling
nT=0:1/Fs:1;
n=0:length(nT)-1; %untuk menentukan sumbu x nya
r=sin(2*pi*F*nT);
U=abs(fft(r));
frek=(0:length(U)-1)/length(U).*Fs; %untuk menentukan sumbu x nya
figure;subplot(2,1,1);stem(n,r);xlabel('n');ylabel('amplitude');title('Sinyal diskrit');subplot(2,1,2);stem(frek,U);xlabel('Frekuensi');ylabel('|X(F/Fs)|');title('Spektrum frekuansi sinyal diskrit');

Analisisnya sama namun yang membedakan adalah letak munculnya frekuensi yang asli kalau di program pertama kita menggunakan frekuensi 150 sekarang kita menggunakan frekuensi 300 Hz. Hasilnya adalah seperti gambaw dibawah ini :
Gambar sisip 4
Gambar 2. Representasi sinyal diskrit domain x(n) dengan domain frekuensi, dengan frekuensi asli 300 Hz.
Terlihat yang membedakan adalah peletakan frekuensi asli setelah  mengalami transformasi yakni pada frekuensi 300 dan 700.
Namun ketika kita mengubah nilaii dari frekuens asli tersebut menjadi 700 maka akan terlihat sama dengan gambar di atas kenapa demikian , karena frekuensi 700 harus di sampling dengan minimal 2 kali dari frekuensi asli. Namun kita masih menggunakan frekuensi sampling 1000 yang terjadi adalah efek nyquist.
Contoh program 3 :
F=700;
Fs=1000;%frekuensi sampling
nT=0:1/Fs:1;
n=0:length(nT)-1; %untuk menentukan sumbu x nya
r=sin(2*pi*F*nT);
U=abs(fft(r));
frek=(0:length(U)-1)/length(U).*Fs; %untuk menentukan sumbu x nya
figure;subplot(2,1,1);stem(n,r);xlabel('n');ylabel('amplitude');title('Sinyal diskrit');subplot(2,1,2);stem(frek,U);xlabel('Frekuensi');ylabel('|X(F/Fs)|');title('Spektrum frekuansi sinyal diskrit');
hasilnya adalah seperti berikut ini :
Gambar sisip 5
Gambar 3. Representasi sinyal diskrit domain x(n) dengan domain frekuensi, dengan frekuensi asli 700 Hz.
Kenapa sama, di atas sudah saya jelaskan karena frekuensi sampling tidak memnuhi syarat untuk menyampling frekuensi asli. Syaratnya seharusnya adalah frekuensi sampling minimal harus 2 kali frekuensi asli atau frekuensi yang akan di sampling. Ini merupakan yang disebut dengan efek nyquist atau aliasing, yaitu terjadi kesalahan pencuplikan.
Sinyal diskrit terbentuk melalui proses sampling (pencuplikan) dengan periode Ts atau frekuensi sampling Fs oleh karena itu agar tidak terjadi kesalah seperti di atas. Mr. Nyquist memberikan aturan bahwa frekuensi sampling minimal harus  2 kali lipat frekuensi maksimum yang dibawa oleh sinyal yang bersangkutan.
Kita mencoba untuk memperbesar frekuensi sampling dengan frekuensi maksimum yang sama.
Contoh program 4 :
F=700;
Fs=2000;%frekuensi sampling
nT=0:1/Fs:1;
n=0:length(nT)-1; %untuk menentukan sumbu x nya
r=sin(2*pi*F*nT);
U=abs(fft(r));
frek=(0:length(U)-1)/length(U).*Fs; %untuk menentukan sumbu x nya
figure;subplot(2,1,1);stem(n,r);xlabel('n');ylabel('amplitude');title('Sinyal diskrit');subplot(2,1,2);stem(frek,U);xlabel('Frekuensi');ylabel('|X(F/Fs)|');title('Spektrum frekuansi sinyal diskrit');
hasilnya seperti berikut :
Gambar sisip 7
Gambar 4. Representasi sinyal diskrit domain x(n) dengan domain frekuensi, dengan frekuensi asli 700 Hz dan frekuensi sampling 2000.
Terlihat pada grafik nampak frekuensi 700 yang muncul karena sudah frekuensi samplingnya sudah memnuhi syarat minimal yang harus dipenuhi. Syarat minimalny adalah 700 x 2 = 1400. Sedangkan untuk program ke empat ini adalah 2000.
Contoh program ke 5 :
F=150; %diganti dengan 700
F2=300;
Fs=1000;%frekuensi sampling
nT=0:1/Fs:1;
n=0:length(nT)-1;
r=sin(2*pi*F*nT)+cos(2*pi*F2*nT);
U=abs(fft(r));
frek=(0:length(U)-1)/length(U).*Fs; %untuk menentukan sumbu x nya
figure;subplot(2,1,1);stem(n,r);xlabel('n');ylabel('amplitude');title('Sinyal diskrit');subplot(2,1,2);stem(frek,U);xlabel('Frekuensi');ylabel('|X(F/Fs)|');title('Spektrum frekuansi sinyal diskrit');
kemudian kita coba dengan menggunakan 2 frekuensi yakni 150 dan 300, untuk memahami yang ini terdapat 2 buah sinyal yang akan di tampilkan yaitu 150 dan 300. Kemudian kita ganti frekuensi tersebut dengan 700 dan 300 maka hasilnya akan bertumpukan karena frekuensi samplingnya tidak memenuhi syarat untuk yang frekuensi pertama. Seperti pada gambar berikut :
Gambar sisip 8
Gambar 5. Representasi sinyal diskrit domain x(n) dengan domain frekuensi, dengan 2 frekuensi 150 Hz dan 300 Hz dan frekuensi sampling 1000.
Gambar sisip 9
Gambar 6. Representasi sinyal diskrit domain x(n) dengan domain frekuensi, dengan 2 frekuensi 700 Hz dan 300 Hz dan frekuensi sampling 1000.
Di atas merupakan transformasi dari sinyal periodik bagaimana kalau dengan sinyal apreodik atau tidak periodik. Pada kali ini program kita yang ke 6 adalah akan mencoba menganalisis dengan sinyal diskrit yang random atau terdapat noise pada sinyal yang bersangkutan. Kita buat suatu sinyal yang mengandung noise dengan fungsi randln di matlab. Dengan frekuensimaks 400 Hz dan frekuensi sampling 1000 Hz. Kita akan membuat sinyal analog dan digital dan kemudian mentransformasikannya.
Berikut ini adalah contoh program 6 , dengan menggunakan noise apakah yang terjadi dengan sinyal yang asli.

F=400;
Fs=1000;%frekuensi sampling
nT=0:1/Fs:1;
n=0:length(nT)-1;
t=0:1/F/50:10/F; %waktu untuk menentukan sinyal analog
r=sin(2*pi*F*nT)+randn(1,length(nT));%akan digunakan untuk membuat sinyal diskrit [n];
rt=sin(2*pi*F*t)+randn(1,length(t));%akan di buat analog x[t];

U=abs(fft(r));
frek=(0:length(U)-1)/length(U).*Fs; %untuk menentukan sumbu x nya
figure;subplot(3,1,1);plot(t,rt);xlabel('t Detik');ylabel('amplitude');title('Sinyal analog noise');subplot(3,1,2);stem(n,r);xlabel('n');ylabel('amplitude');title('Sinyal diskrit');subplot(3,1,3);plot(frek,U);xlabel('Frekuensi');ylabel('|X(F/Fs)|');title('Spektrum frekuansi sinyal diskrit');

Karena kita akan membuat sinyal analog juga kita membutuhkan t (waktu) karena sinyal analah tergantung pada domain waktu. Jadi kita membuat time dari 0 sampai dengan 10/F sama dengan 0,0025. Yakni dengan skala 1/F/50 atau dalam program kita ini sama dengan 0,00005.  Jadi nanti terdapat 50 skala dari 0 samapai dengan 0,0025. Kemudian kita membuat fungsi random dari sinyal sinusoidal yaitur=sin(2*pi*F*nT)+randn(1,length(nT)); untuk sinyal waktu diskrit dan rt=sin(2*pi*F*t)+randn(1,length(t));untuk  sinyal waktu kontinu. Fungsi randln sendiri adalah untuk mengasilkan noise pada sinyal yang bersangkutan sehingga tersamarkan. Kemudian kita menampilkan dengan menggunakan plot agar terlihat randomnya. Program di atas ketika di run hasilnya akan seperti berikut ini :
Gambar sisip 10
Gambar 7. Representasi sinyal analog, diskrit dan DFT sinyalnya bersifat random dan terdapat noise.
Sudah saya jelaskan sedikit di atas bahwa fungsi randln adalah untuk membentuk sinyal random atau noise. Jadi sebelum-sebelumnya kita menggunakan sinyal yang periodi sekarang kita menggunakan sinyal random, dapat dikatakan terdapat noise yang dapat mengganggu untuk mentransformasikan frekuensi yang asli.
Pengaruh dari randln jika di perbesar adalah frekuensi yang asli akan semakin tidak namapak. Mari kita coba menganalisis dengan frekuensi sinyal yang sama di atas namun randln di perbesar. Programnya menjadi :
F=400;
Fs=1000;%frekuensi sampling
nT=0:1/Fs:1;
n=0:length(nT)-1;
t=0:1/F/50:10/F; %waktu untuk menentukan sinyal analog
r=sin(2*pi*F*nT)+6.*randn(1,length(nT));%akan digunakan untuk membuat sinyal diskrit [n];
rt=sin(2*pi*F*t)+6.*randn(1,length(t));%akan di buat analog x[t];

U=abs(fft(r));
frek=(0:length(U)-1)/length(U).*Fs; %untuk menentukan sumbu x nya
figure;subplot(3,1,1);plot(t,rt);xlabel('t Detik');ylabel('amplitude');title('Sinyal analog noise');subplot(3,1,2);stem(n,r);xlabel('n');ylabel('amplitude');title('Sinyal diskrit');subplot(3,1,3);plot(frek,U);xlabel('Frekuensi');ylabel('|X(F/Fs)|');title('Spektrum frekuansi sinyal diskrit');
Tulisan yang berwarna merah merupakan cara untuk memperbesar noise sebanyak 6 kali. Hasilnya adalah sinyal frekuensi yang asli tidak akan muncul seperti sebelumnya. Figurnya seperti berikut
Gambar sisip 11
Gambar 8. Representasi sinyal analog, diskrit dan DFT sinyalnya bersifat random dan terdapat noise yang di perbesar sebanyak 6 kali.

Jadi kesimpulannya semakin besar noise yang ada semakin hilang frekuensi aslinya dan tidak dapat di perlihatkan.
Lanjut baca - TRANSFORMASI FOURIER DISKRIT DENGAN FAST FOURIER TRANSFORM SERTA ALIASING

MEMBUAT APLIKASI DENGAN GUI MATLAB (GUI BUILDER)


Bismillah, Assalamualaikum . .
Berikut ini adalah akan saya bahas mengenai hasil praktikum pengolahan sinyal digital pada pukul 15.00 tanggal 13-November-2012. Pada praktikum kali ini adalah mencoba untuk membuat GUI di MATLAB menggunakan GUIDE (GUI Builder). Dengan harapan ketika sebuah program dibuat GUI (Graphical User Interface) lebih mudah dipelajari dan digunakan, karena user tidak tahu apa yang sebenarnya program ini lakukan ketika program ini deksekusi. Dengan GUI ini akan mempermudah orang lain dalam menggunakan aplikasi buatan kita, sedangkan pada tahap pembuatannya yang lumayan susah. GUIDE atau GUI builder merupakan sebuah graphical user interface (GUI) yang dibangun dengan
obyek grafik seperti tombol (button), kotak teks, slider, menu dan lain-lain.
Pada kali ini kita akan membuat sebuah aplikasi dari matlab untuk penghitungan sinyal sinus dan cosinus. Dimana program ini akan menghitung dan menampilkan hasil representasi dari sinyal sinus dan cosinus yang dihasilkan dalam bentuk gelombang.
langkahnya adalah sebagai berikut ini :
1. Untuk memulainya ada 2 cara , yang pertama menggunakan command line dengan mengetikkan >> guide, yang kedua dengan mengklik tombol Start Matlab -> Matlab -> GUIDE (GUI Builder).
Gambar sisip 1
Gambar 1. GUIDE Quick Start
GUIDE Quick Start memiliki dua buah pilihan, yaitu Create New GUI dan Open Existing GUI. Create New GUI digunakan jika kita memang belum pernah membuat aplikasi GUI Matlab atau jika kita memang ingin membuat sebuah figure baru, sedangkan Open Existing GUI digunakan jika kita akan memodifikasi file figure yang telah kita simpan atau sudah kita buat sebelumnya.
Kemudian jika kita memilih Creat New GUI maka kita akan diberikan suatu halaman untuk membuat tampilan dari program yang akan kita buat. Yang nantinya akan tampil seperti berikut ini
Gambar sisip 7
Gambar 2. Tampilan Menu bar
Di atas merupakan menu-menu utama yang nantinya kita gunakan untuk membuat program berbasis GUI dari matlab. Alignment tool digunakan untuk mengatur posisi dari menu menu yang telah kita buat agar terlihat rapi dan sejajar. Component Pallete digunakan untuk membuat tampilan menu pada program yang kita akan buat. Layout Editor digunakan untuk lembar kerja kita membuat tampilan program kita. Menu Editor digunakan untuk mengedit menu program kita. M-file Editor digunakan untuk mengedit program melalui source code program yang sedang dibuat. Property Inspector menu yang digunakan untuk mengatur properti dari masing-masing kontrol. Run digunakan untuk mengeksekusi program atau menjalankan program yang sedang kita buat.
Gambar sisip 3
Gambar 3. Menu Pallete
Menu pallete diatas kegunannya untuk membuat menu-menu dalam program matlab yang kita buat. Yang pertama ada Push Button digunakan untuk membuat menu yang berfungsi sebaga tombol atau switch. Radio Buttondigunakan untuk membuat menu yang hanya dipilih salah satu menu saja. Edit Text digunakan untuk membuat menu yang digunakan untuk menerima inputan dari user dalam artian dapat diubah oleh user. Slider merupakan menu yang digunakan untuk membuat inputan bukan dari keyboard tapi dari pergeseran, menggesernya hanya dapat dua arah yaitu vertical dan horizontal. Group Menu / list Box adalah menu yang digunakan untuk mengelompokkan menu dalam satu frame pada keselurruhan menu. Axes digunakan untuk menampilkan sebuah grafik atau gambar (image). Axes sebenarnya tidak masuk dalam UIControl, tetapi axes dapat diprogram agar pemakai dapat
berinteraksi dengan axes dan obyek grafik yang ditampilkan melalui axes. Toggle Button hampir sama dengan push button yang membedakan adalah jika kita menggunakan push button maka ketika di klik tombol akan kembali kesemula pada Toggle Button ini dia tidak akan kebal kebentuk semula. Check Box digunakan untuk membuat menu pilihan yang dapat dipilih lebih dari satu. Static Text kegunaanya adalah untuk memberi label pada menu tertentu. Frame merupakan kotak yang digunakan untuk mengelompokkan kontrol-kontrol dari semua program kita. Popup Menu digunakan untuk Popop menu berguna menampilkan daftar pilihan yang didefinisikan pada String Propoerty ketika mengklik tanda panah pada aplikasi dan memiliki fungsi yang sama seperti radio button.
2. Setelah kita mengetahi dasarny kemudian kita mencoba untuk membuat program kita. Caranya adalah Seperti yang pertama ketikkan di command linde >> guide [enter]. Kemudian buat halaman kerja baru dan di save dengan nama Program GUI pertama.
a. Mendesain figure menuPada desain ini kita membuat sutu program kontrol-kontrol yang dibutuhkan itu apa saja. Pada program yang akan kita buat adalah kita membutuhkan input berupa pilihan sinus ataupun cosinus, inputan amplitudo, frekuensi, dan fasa. Serta 3 buath tombol untuk untuk kontrol program dan satu buah axes untuk menampilkan representasi berupa gambar grafik. Dari kontrol-kontrol yang dibutuhkan kita membutuhkan 2 buah radio button, 3 buahEdit text untuk menerima inputan Amplitudo, Frekuensi, dan fasa, 3 buah Push Button, 1 buah axes untuk tampilan, 1 buah Button Group. Untuk desain saya adalah seperti berikut
Gambar sisip 4
Gambar 4. Desain tampilan program
b. Mengatur property masing-masing kontrolSetelah kita mendesain tampilan menunya kita atur masing-masing kontrol dengan menggunakan property inspector.
Komponen
Property Inspector
Font Size
String
Tag
Radio Button112Sinussinus
Radio button 212Cosinuscosinus
Edit text 112nulledit1
Edit text 212nulledit2
Edit text 312nulledit3
push button112ExecuteExecuteProgram
push button212Resetreset
push button312QuitExit
axes  axes1
c. Mengatur syntaxs programAgar program kita berjalan seperti yang kita harapkan yang terpenting adalah mengedit source code dari program kita agar fungsi-fungsi seperti reset, execute, exit dll dapat bekerja sesuai harpankita. caranya adalah dengan mengatur pada call back masing-masing kontrol.
caranya adalah dengan mengklik kanan pada komponen yang ingin kita beri fungsi view callback -> callback

  • Sinus
    Di fungsi sinus kita tambahkan kode berikut
    set(handles.cosinus,'Value',0);
    pilih = 1;
    handles.pilih=pilih;
    guidata(hObject,handles)
  • cosinus
    Pada Cosinus juga ditambahkan kode yang hampir sama dengan nomer 1,
    set(handles.sinus,'Value',0);
    pilih = 2;
    handles.pilih=pilih;
    guidata(hObject,handles)
  • ExecuteProgram
    untuk menghitung nilai yang dihasilkan Pada fungsi ini ditambahkan kode berikut :
    A=str2num(get(handles.edit1, 'string')); %mengambil nilai pada edit1
    F=str2num(get(handles.edit2, 'string')); %mengambil nilai pada edit2
    theta=str2num(get(handles.edit3, 'string')); %mengambil nilai pada edit3
    t=-3/F:1/50/F:3/F; %membangkitkan sumbu t


    pilih=handles.pilih %berhubungan dg pilihan pada radiobutton
    switch handles.pilih
    case 1 %jika radiobutton1 yang ditekan
    y=A*sin(2.*pi.*F.*t+theta); %maka menghitung nilai sinus
    case 2 %jika radiobutton2 yang ditekan
    y=A*cos(2.*pi.*F.*t+theta); %maka menghitung nilai cosinus
    end

    axes(handles.axes1); %ditampilkan ddi axes1
    a=0; %membuat garis, seperti sumbu x dan sumbu y
    plot(t,y,'r'); %menampilkan hasil perhitungan
    xlabel('detik');ylabel('Amplitudo');
    xlim([min(t) max(t)]);
    grid on
  • reset
    untuk mereset seperti pada awal program dijalankan, caranya adalah mengosongkan masing-masing inputan. Yang string dibuat null dan yang berisi value di beri nilai 0
    set(handles.edit1 , 'string', ''); %mengosongkan string pada edit1
    set(handles.edit2, 'string', ''); %mengosongkan string pada edit2
    set(handles.edit3, 'string', ''); %mengosongkan string pada edit2
    set(handles.cosinus,'Value',0);
    set(handles.sinus,'Value',0);
    axes(handles.axes1);
    plot(0);
  • exit
    untuk keluar program kita tambahkan fungsi close();
d. Run Program 
Setelah semuanya selesai kemudian kita Run program dengan cara mengklik tombol RUN, setelah itu kita coba isikan nilainya apakah program berjalan dengan baik. jika belum maka di perbaiki lagi sampai hasilnya seperti ini :

Gambar sisip 6Gambar 5. Hasil akhir

Lanjut baca - MEMBUAT APLIKASI DENGAN GUI MATLAB (GUI BUILDER)

Lanjut Sampling dan Aliasing (Efect Niquyst)


SAMPLING dan ALIASING
kemarin kita sudah belajar mengenai sampling pada kali ini kita akan belajar bagaimana kita menyampling suatu sinyal digital, apa pengaruhnya penggunaan frekuensi sampling pada sinyal digital berikut ini adalah uraian yang dapat saya sampaikan pada analisis sampling dan aliasing.
1.       Pengamatan Pengaruh Pemilihan Frekuensi Sampling Secara Visual
Pada praktikum kali ini kita akan mengamati tentanga sampling dan aliasing, dimana kita tahu bahwa untuk mengkonversi dari sinyal analog ke digital memerlukan beberapa proses, yakni sampling, kuantisasi dan coding. Selain itu untuk mengkonversi sinyal digital ke analag juga memerlukan proses digital konversi.
Pertama kita lakukan pada praktikum kali ini adalah mengamati pengaruh frekuensi sample yang berbeda untuk setiap periode sinyal. Untuk membuat sinyal di gital sinusoidal adalah seperti program di bawah ini
Fs=8;%frekuensi sampling
t=(0:Fs-1)/Fs;%proses normalisasi
s1=sin(2*pi*t*2);
subplot(211)
stem(t,s1)
axis([0 1 -1.2 1.2])

Fs=16;%frekuensi sampling
t=(0:Fs-1)/Fs;%proses normalisasi
s2=sin(2*pi*t*2);
subplot(212)
stem(t,s2)
axis([0 1 -1.2 1.2])
dari program di atas frekuensi sampling yang lebih besar menghasilkan sampling yang lebih banyak dari pada program sinyal sinusoidal yang memiliki frekuensi sampling yang lebih sedikit. Program di atas gambarnya seperti berikut :
Gambar sisip 1
Gambar 1 perbedaan jumlah frekuensi sampling
2.       Pengamatan Pengaruh Pemilihan Frekuensi Sampling pada Efek Audio
Setelah kita mengetahui bahwa pengaruh jumlah frekuensi sampling akan menghasilkan jumlah nilai samplingan yang berbeda secara visual, sekarang kita akan mendengarkan bagaimana pengaruh frekuensi sampling melalui sinyal audio.
Kita membuat file di editor baru dan mengetikkan program berikut :
clear all;
Fs=1000;
t=0:1/Fs:0.25;
f=100;
x=sin(2*pi*f*t);
sound(x,Fs)
fungsi ini digunakan untuk memperdengarkan sinyal sampling sin, dalam bentuk sebuah suara. Dimulai dengan perintah clear all yang berfungsi menghapus semua data yang ada di dalam workspace. Kemudian menentukan frekuensi sample yang di dalam contoh itu sebesar 10000. Dan juga menentukan t yang berfungsi sebagai pedoman seberapa lama nada itu berakhir. Kemudian menentukan besarnya frekuensi yang dalam hal ini besarnya adalah 100. Dan kemudian membuat persamaan sinyal sinus x=sin(2*pi*f*t). dan terakhir adalah keyword sound yang digunakan untuk mengirim bunyi dari vektor x dengan frekuensi sampling Fs ke speaker.
Jika program dijalankan terdapat suara yang muncul pada waktu t. Kemudian kita ubah f menjadi 200 sampai 900. Hasilnya adalah ada perubahan tinggi nada yang dihasilkan kemudian kembali merendah seperti pada nada sebelumnya. Yaitu nada yang dihasikan frekuensi 100 sama dengan frekuensi 900, frekuensi 200 sama dengan frekuensi  800, frekuensi 300 sama dengan frekuensi  700, frekuensi 400 sama dengan frekuensi  600.
Dapat disimpulkan bahwa sinyal Frekuensi 100 alias 900, Frekuensi 200 alias 800, Frekuensi 300 alias 700, Frekuensi 400 alias 600.
Suara akan tetap dihasilkan selama besar f< 2Fs. Jadi sinyal 1000 tidak dapat dihasilkan melalui program di atas.
3.       Pengamatan Efek Aliasing pada Audio 1
Kali ini kita akan membuat beberapa nada dengan frekuensi yang berdebeda, dari situ kita dapat membuat rangkaian nada tersebut menjadi sebuah lagu yang enak di dengar. Untuk itu kita buat contoh program untuk menganalisis bagaimana pengaruh frekuensi sampling pada efek aliasing dengan menyusun sebuah nada menjadi rangkaian lagu. Dibawah ini merupakan program yang akan kita analisis
clc
Fs=3000;
t=0:1/Fs:0.25;
c=sin(2*pi*262*t);
d=sin(2*pi*294*t);
e=sin(2*pi*330*t);
f=sin(2*pi*249*t);
g=sin(2*pi*392*t);
a=sin(2*pi*440*t);
b=sin(2*pi*494*t);
c1=sin(2*pi*523*t);
nol = [zeros(size(t))];
nada1 = [c,e,c,e,f,g,g,nol,b,c1,b,c1,b,g,nol,nol];
nada2 = [c,e,c,e,f,g,g,nol,b,c1,b,c1,b,g,nol];
nada3 = [c,nol,e,nol,g,nol,f,f,g,f,e,c,f,e,c,nol];
nada4 = [c,nol,e,nol,g,nol,f,f,g,f,e,c,f,e,c];
lagu=[nada1,nada2,nada3,nada4];
sound(lagu,Fs);
wavwrite(lagu,'gundul.wav');

Fungsi diatas digunakan untuk membuat nada-nada yang kemudian akan disusun menjadi sebuah lagu dalam format wav. Prinsip dari fungsi kedua ini sama dengan fungsi yang pertama. Jadi yang dilakukan adalah mengirimkan sinyal di vektor not (c,d,e,f,g,a,b,cl) yang disampling oleh Fs. kemudian not not itu disusun dalam matriks nada (nada1,nada2,nada3,nada4). Nada-nada itu kemudian disatukan kedalam sebuah matriks lagu yang akan dikirim ke speaker oleh keyword sound. Terakhir dengan keyword wavwrite akan menuliskan ke dalam file .wav, yang bisa di dengarkan di pemutar lain.
Kemidian kita merubah frekuensi sampling kita menjadi nilai frekuensi sampling Fs=16000, menjadi Fs =10000, 8000, 2000, 1000, 900, 800, 700, 600, dan 500. Semakin rendah frekuensi sampling yang ita gunakan maka suaranya semakin tidak beigitu jelas seperti yang frekuensi 16000
Kemudian kita ubah ubah frekuensi sampling dengan frekuensi sampling 2 kali lebih besar dari frekuensi yang disampling maka frekuensi sampling nada yang dihasilkan semakin tidak jelas, ada makna yang tidak tersampaikan jadi terdengar terdapat blur pada nada yang dihasilkan.
Semakin tinggi frekuensi samplingnya maka nada tersebut berbunyi lebih cepat dari nada yang sebelumnya begitu sebaliknay jika frekuensi samplingnya lebih kecil maka nada tersebut semakin lambat. Hal ini dapat dibuktikan karena semakin besar frekuensi sampling yang kita gunakan maka semakin kecil periodenya, jadi jarak antara gelombang satu dengan gelombang lain semakin merapat dan mendekat sehingga akan tercipta nada yang cepat pula dan begitu sebaliknya.
4.       Pengamatan Efek Aliasing pada Audio 2
 Kemudian kita mencoba untuk menggunakan lagu yang diambil dari sebuah file *.wav. kemudian akan disampling menggunakan beberapa frekuensi sampling. Berikut ini adalah programnya
clear all;
[Y,Fs]=wavread('LP.wav');
Fs=16000;%nilai default Fs=16000
%Pilihan untuk memainkan lainnya Fs=8000, 11025, 22050,44100
sound(Y,Fs)
fungsi ketiga ini digunakan untuk mengembalikan nilai Fs dari ‘LP.wav’ dalam herzt dan dikirim ke speaker untuk kembali dikeluarkan. Fs digunakan untuk mengatur berapa besarnya frekuensi sampling yang mau kita analisis.
Dengan frekuensi sampling  16000 Hz lagu terdengar sama seperti aslinya, sehingga kita dapat menangkap apa yang sedang berbunyi.
Kemudian kita turunkan lagi menjadi 8000 Hz namun suaranya terdengar lebih rendah dan lebih lambat temponya dari yang sebelumnya hal ini di akibatkan semakin besar frekuensi samplingnya makan semakin rapat atau semakin banyak nilai sampling yang dapat diambil.
Kemudian saya ingin mencoba kembali merubahnya dengan frekuensi sampling Fs = 11025, 22050, dan 44100.
Pada frekuensi 11025 lagu terdengar agak melambat, karena frekuensi sampling lebih kecil dari frekuensi yang di sampling sehingga suaranya sedikit melambat
Pada frekuensi 22050 lagu terdengar dipercepat, karena frekuensi sampling lebih besar dari frekuensi yang di sampling sehingga suaranya sedikit dipercepat dari lagu sebelumnya.
Pada frekuensi 44100 lagu terdengar semakin tambah cepat, karena frekuensi sampling lebih besar dari frekuensi yang di sampling sehingga suaranya semakin cepat dan ini adalah frekuensi yang paling tinggi saya gunakan kita dapat menggunakan yang lebih tinggi lagi.
Kesimpulannya semakin tinggi frekuensi sampling semakit kecil periodenya jika semakin kecil periodenya maka semakin banyak nilai yang disampling, dengan semakin banyak nilai yang disampling semakin rapat bentuk gelombangnya hasilnya semakin cepat untuk berpindah nada karena periodenya yang singkat.
Lanjut baca - Lanjut Sampling dan Aliasing (Efect Niquyst)