Kamis, 26 April 2018

Algoritma Genetika Dalam Toolbok

Misalkan kita dikasih rumus matematika:
y=(x-3)^2+10;

Lalu di tanyakan:
Berapakah nilai x agar menghasilkan nilai keluaran minimum? dengan range antara 0 s/d 20..

Tentu kita akan coba2 dan memasukkan  semua angka range tersebut....dan didapat hasil yg minimum saat x=3.

Nah disinilah kita perlunya Genetika u optimasi.....

caanya sbb:

1.buat fungsi dan simpan ke suatu folder, misal  sebagai berikut:

function [ y] = myRumus( x)
y=(x-3)^2+10;
end


2.pada CLI Matlab ketik : optimtool, lalu konfigurasi fform sbb:
atau bisa juga mengetikkan: optimtool(‘ga’)




Terahir klik start dan amati hasilnya:

Persamaan di atas akan menghasilkan nilai minimum saat x bernilai : 3
dengn hasil y/Objective function value: 10.000000000441915;



dari grafik bisa dipahami bahwa pada iterasi ke 3, hasil sudah rendah dan saat loop berikutnyapun hasilnya tidak berubah......sehingga iterasi 3 melakukan penguncian atau Elitisme nilai terendahnya.


Oh mudah yaaaaaaaaaaaaaaaaaaaa....


Rabu, 04 April 2018

Pemrosesan SInyal Audio


Konversi Audio ke FFT


path='datalatihh/alif.wav';
[x,fs] = audioread(path);
no=78010;%batasan pixel

nn=size(x,1);
if no< nn
   nn=no;
else
    nn=no;
end   

FFT = fft(x,nn);
outFFT=reshape(FFT,[1,size(FFT,1)*size(FFT,2)]);
plot(x);

Andai kita ambil secuplik / sampling audio ybs datanya adalah sbb:(antara pixel ke 30000 s/d 300010)=10 pixeel audio

samplingAudio=x(30000:30010,:)

samplingAudio =

    0.0587   -0.0587
    0.0601   -0.0601
    0.0797   -0.0797
    0.1053   -0.1053
    0.1205   -0.1205
    0.1296   -0.1296
    0.1529   -0.1529
    0.2001   -0.2001
    0.2499   -0.2499
    0.2728   -0.2728
    0.2801   -0.2801

>> plot(samplingAudio)



Lalu proses FFT nya adalah sbb:

FFT=fft(sampling)

FFT =

   1.7097 + 0.0000i  -1.7097 + 0.0000i
  -0.0403 + 0.5043i   0.0403 - 0.5043i
  -0.1796 + 0.2140i   0.1796 - 0.2140i
  -0.0956 + 0.0925i   0.0956 - 0.0925i
  -0.1056 + 0.0545i   0.1056 - 0.0545i
  -0.1107 + 0.0176i   0.1107 - 0.0176i
  -0.1107 - 0.0176i   0.1107 + 0.0176i
  -0.1056 - 0.0545i   0.1056 + 0.0545i
  -0.0956 - 0.0925i   0.0956 + 0.0925i
  -0.1796 - 0.2140i   0.1796 + 0.2140i
  -0.0403 - 0.5043i   0.0403 + 0.5043i

plot(FFT)



sedang untuk FFT nilai Single  hasilnya sbb:

FFT =

   1.7097 + 0.0000i   1.7097 + 0.0000i
  -0.0403 + 0.5043i  -0.0403 + 0.5043i
  -0.1796 + 0.2140i  -0.1796 + 0.2140i
  -0.0956 + 0.0925i  -0.0956 + 0.0925i
  -0.1056 + 0.0545i  -0.1056 + 0.0545i
  -0.1107 + 0.0176i  -0.1107 + 0.0176i
  -0.1107 - 0.0176i  -0.1107 - 0.0176i
  -0.1056 - 0.0545i  -0.1056 - 0.0545i
  -0.0956 - 0.0925i  -0.0956 - 0.0925i
  -0.1796 - 0.2140i  -0.1796 - 0.2140i
  -0.0403 - 0.5043i  -0.0403 - 0.5043i

%yaitu hanya melihat satu sisi amplitudo saja


Selanjutnya adalah proses Pembuatan Prediksi data FFT yang akan datang dari gabungan beberapa data FFT sejenis untuk dijadikan rujukan kedekatan dengan sinyal FFT audio uji.

dalam hal ini kita membuat perhitungan statistiknya menggunakan metode Hidden Markov Model

Misalkan data Uji dalah data sbb:


X=rand(3,10); %menggenerate bilangan random sebanyak 3 baris dan 10 kolom
X =

    0.8147    0.9134    0.2785    0.9649    0.9572    0.1419    0.7922    0.0357    0.6787    0.3922
    0.9058    0.6324    0.5469    0.1576    0.4854    0.4218    0.9595    0.8491    0.7577    0.6555
    0.1270    0.0975    0.9575    0.9706    0.8003    0.9157    0.6557    0.9340    0.7431    0.1712

Lalu dicari nilai total dari setiap barisnya

S=sum(X)
S =
    1.8475    1.6433    1.7829    2.0931    2.2428    1.4794    2.4074    1.8188    2.1796    1.2189


Lalu bagikan setiapd ata matrix dengan data total di atas:
H=X./S

H =

    0.4410    0.5558    0.1562    0.4610    0.4268    0.0959    0.3291    0.0196    0.3114    0.3218
    0.4903    0.3848    0.3067    0.0753    0.2164    0.2851    0.3986    0.4669    0.3476    0.5378
    0.0687    0.0594    0.5371    0.4637    0.3568    0.6190    0.2724    0.5135    0.3409    0.1404


ATau bisa juga menggunakan rumus sbb:

H2=bsxfun(@rdivide, double(X), double(S))

H2 =

    0.4410    0.5558    0.1562    0.4610    0.4268    0.0959    0.3291    0.0196    0.3114    0.3218
    0.4903    0.3848    0.3067    0.0753    0.2164    0.2851    0.3986    0.4669    0.3476    0.5378
    0.0687    0.0594    0.5371    0.4637    0.3568    0.6190    0.2724    0.5135    0.3409    0.1404

Selanjutnya barulah ke tahap perhitungan jarak/mencari selisih jarak antara data latih di atas dengan data UJi dengan menggunakan rumus jarak diantaranya ecludean distance

Misalkan sinyalFFT Uji adalah sebagai berikut datanya:
Uji =

    0.0687    0.0594    0.5371    0.4637    0.3568    0.6190    0.2724    0.5135    0.3409    0.1404



EccHmm(1)= sqrt(sum((H(1,:)-Uji).^2));
EccHmm(2)= sqrt(sum((H(2,:)-Uji).^2));
EccHmm(3)= sqrt(sum((H(3,:)-Uji).^2));

EccHmm =

    1.0438    0.8915         0

            
EcludeanDIstanceValue =min(EccHmm )  =0

Kesimpulan=Dalam hal ini sinyalUji sangat dekat dengan datalatih ke-3 dari data Uji.