Selasa, 06 September 2016

Diktat Sinyal dan Sistem

Catatan ini digunakan untuk mahasiswa D3. Untuk mahasiswa D4 materi kuliah ditambah dengan praktikum dengan buku petunjuk praktikum dapat di download pada link yang lain. jika ingin men-download catatan (buku teori) Sinyal dan Sistem, silakan klik link berikut ini: https://id.scribd.com/document/323071674/Yulianto-Sinyal-dan-Sistem-D-III-PSTE-pdf

Senin, 16 Juni 2014

Percobaan 12 Fuzzy dan ANFIS



PERCOBAAN 12
FUZZY DAN ANFIS

Tujuan Praktikum
-          Memahami konsep dasar FUZZY  dan ANFIS dalam kaitannya dengan pengolahan sinyal
-          Mempu mendesain dan membuat program untuk fuzzy dan Anfis dan aplikasinya

12.1  Teori Dasar
13.1.1 Fuzzy
Logika fuzzy merupakan sebuah logika yang memiliki nilai kekaburan atau kesamaran (fuzzyness) antara benar an salah. Dalam logika fuzzy sebuah nilai bisa bernilai benar dan salah secara bersamaan namum berapa besar kebenaran dan kesalahan suatu nilai tergantung kepada bobot keanggotaan yang dimiliki.
Dalam teori logika fuzzy dikenal himpunan fuzzy yang merupakan pengelompokan sesuatu berdasarkan variabel bahasa, yang dinyatakan dalam fungsi keanggotaan. Di dalam semesta pembicaraan U, fungsi keanggotaan dari suatu himpunan fuzzy tersebut bernilai antara 0,0 sampai dengan 1,0. Sebagai contoh, himpunan dari temperatur dapat dinyatakan dengan: dingin, sejuk, normal, hangat, panas. Grafik dari himpunan suhu ini ditunjukkan pada gambar 12.1.
 


Gambar 13.1. Contoh Keanggotaan Himpunan Temperatur

Himpunan dari kecepatan dapat dinyatakan dengan: lambat, cepat, sangat cepat. Grafik dari himpunan kecepatan ini ditunjukkan pada gambar berikut:


 

 Gambar 13.2  Contoh Keanggotaan Himpunan Kecepatan


Fungsi dari keanggotaan suatu himpunan fuzzy dinyatakan dengan derajat keanggotaan suatu nilai terhadap nilai, tegasnya yang berkisar antara 0,0 sampai dengan 1,0. Fungsi keanggotaan suatu himpunan fuzzy dapat dinyatakan dengan fungsi segitiga, trapesium, atau Gauss.
Cara kerja logika fuzzy. Dalam sistem kontrol logika fuzzy terdapat beberapa tahapan operasional yang meliputi: fuzzifikasi, penalaran, aturan dasar, dan defzzifikasi.


 


Gambar 13.3 Blok Diagram Kontol Fuzzy






Fuzzyfikasi. Fuzzyfikasi adalah suatu prosses peubhan nlai nyata yang ada ke dalam fungsi keanggotaan.Misalnya pada Gambar 13.4, fuzyfikasi dari suhu 35oC adalah:
µA1 = 2/3  dan µA2  = 1/3 .



Gambar 13.4 Fungsi Fuzzyfikasi Suatu Sinyal

Aturan Dasar (rule based). Aturan dasar pada kontrol logika fuzzy merupakan bentuk aturan relasi/implikasi ”Jika-Maka” atau ”If – Then” seperti pada pernyataan berkut:
” Jika” X = A dan ”Jika” Y=B ”Maka” Z=C
Contoh dari aturan ini, misalnya diimplementasikan pada pengaturan suhu rungan menggunakan kipas angin, dapat dinyatakan seperti berikut:
1. ” Jika” suhu panas dan
2. ”Jika” kecepatan kipas sngat lamba
3. ”Maka” frekuensi sumber dinaikkan sangat tinggi  agar kecepatan kipas tinggi
Jadi aturan dasar  ditentukan sesuai dengan karakteristik objek yang akan dikendlikan. Aturan dasar tersebut dapat dinyatakan dalam bentuk matrik aturan dasar. Contoh aturan dasar dari rancangan pengaturan suhu ruangan dapat dilihat pada tabel 7.
 




Tabel 7. Contoh Matrik Aturan Dasar Perancangan Kontrol Logika Fuzzy
       Y
X
B
S
K

B
K
K
B

Z
S
K
S
K
K
B
K
B
Dimana:
X: Suhu, Y: Kecepatan Kipas dn Z: Sumber  Frekuensi
B: Besar, S: Sedang, K: Kecil
Penalaaran Kontrol Logika Fuzzy. Dalam menalar nilai masukan guna penentuan nilai keluaran sebagai bentuk pengambil keputusan. Salah satu model penalaran yang banyak dipakai adalah penalaran max-min. Dalam penalaran model max-min  proses pertama yang dilakukan adalah melakukan min sinyal keluaran lapisan fuzzifikasi, yang diteruskan dengan opeasi max untuk mencari nilai keluaran yang selanjutnya akan difuzzyfikasikan sebagai bentuk keluaran pengontrol. Operasional max-min tersebut dapat dinyatakan sebagai berikut:

Operasi Min/Irisan
a b = min(a,b) = a if a ≤ b dan  b if a  > b

Operasi Min/Irisan
a U b = min(a,b) = a if a ≥ b dan  b if a < b
Proses operasi penalaran max-min dapat dijelaskan dengan grafik berikut ini:



Deffuzifikasi. Merupakan proses pemetaan fuzzy kehimpunan tegas (crips). Proses ini merupakan kebalikan dari proses fuzzyfikasi. Proses defuzzifikasi dinyatakan sebagai berikut:
Z* = defuzzier Z
Dimana:
Z    = Hasil penalaran fuzzy
Z*  = Keluaran kontrol FL

Metode dalam melakukan defuzzifikasi antara lain:
1. Metoda Max (Maximum)
Metoda ini juga dikenal dengan metoda puncak dimana nilai keluaran dibatasi oleh fungsi: µc(z*) > µc 1 (z)
2. Metoda Titik Tengah (Center of Area)
Metoda ini juga disebut puat area. Ini lazim dipakai dalam proses defuzzikasi. Metoda ini diekspresikan dengan persamaan berikut:



3. Metoda Rata-rata (Average)
Metoda ini digunakan untuk fungsi keanggotaan keluaran yang simetris. Peersamaan dari metoda ini adalah:




5. Metoda Titik Tengah Area Terbesar
Dalam Metoda ini dipilih beradasarkan titik pusat area terbesar yang ada. Metoda ini dinyatakan dalam bentuk:
 
Selanjutnya keluaran dari defuzzifikasi tersebut akan digunakan sebagai KLF

13.1.2 Sistem Adaptif Neuro Fuzzy
Adaptive Neuro-Fuzzy Inference System (ANFIS) adalah penggabungan mekanisme sistem inferensi fuzzy yang digambarkan dalam arsitektur jaringan syaraf. Sistem adaptif neuro fuzzy berbasis inferensi fuzzy mempunyai dua parameter; yaitu parameter premis dan konsekuensi. Dalam pelatihan ini dilakukan dua arah yaitu langkah maju dan langkah balik.  Berikut ini ditunjukkan contoh mekanisme inferensi fuzzy Tagaki-Sugeno-Kang (TSK)  orde satu dengan dua masukan x dan y (Gambar 13.6). Basis aturan dengan dua aturan fuzzy if-then sebagai berikut:
Rule 1 :     if    x is A1 and y is B1      then       f1 = p1x + q1y + r1
                       premis                                        consequent
Rule 2 :     if    x is A2 and y is B2      then       f2 = p2x + q2y + r2
                       premis                                        consequent
Input : x dan y.  Consequent-nya adalah f
 



Pada suatu masukan crisp (tidak fuzzy) x dan y. x adalah harga variabel yang dikontrol yaitu pada saat ke t, dan y pengukuran pada saat ke t+1 sedangkan f adalah nilai tegangan yang diberikan sebagai sinyal kontrol. Harga x dan y tersebut jelas bukan fuzzy. Lalu nilai x dan y tersebut dipetakan pada funggsi keanggotaannya.
Tiap input dibagi jadi 2 fungsi keanggotaan, x dibagi dalam A1 dan A2. A1 menyatakan small dan A2 menyatakan big. Begitu juga y dibagi dalam fungsi keanggotaan B1 yang menyatakan small dan B2 yang menyatakan big.
Dari pemetaan tersebut x dan y sudah jadi variabel fuzzy yang masing-masing punya nilai small dan big tertentu. Variabel x mempunyai nilai mA1 dan mA2 sedangkan y punya nilai mB1 dan mB2. Nilai masing-masing pasangan masukan tersebut diagregasi dengan operasi T-norm, misalnya operasi AND. Jadi w1 = (mA1 AND mA2) sedangkan w2 = (mB1 AND mB2). Dari basis aturan yang sudah dibuat, diketahui:
if   w  =  w1    then   f1    =   p1x + q1y + r1
if   w  =  w2    then   f2    =   p2x + q2y + r2
Jadi hasil akhirnya adalah f1 dan f2, yang merupakan nilai keluaran sinyal control.
Paramter p1, q1, r1, p2, q2, dan r2 namanya parameter konsekuen yang ditentukan dengan nilai awal tertentu dan akan berubah dengan pembelajaran (algoritma belajar). Selanjutnya dari nilai f1 dan f2 ini kita perlu mendapatkan satu nilai tegangan sebagai sinyal kontrol. Nah nilai akhir tersebut dihitung dengan persamaan:
 


Ini yang disebut sebagai defuzzyfikasi. Rumus tersebut diperoleh dari metode rata-rata tengah (centroid).

Arsitektur ANFIS
Struktur ANFIS yang menggambarkan sistem fuzzy TSK ditunjukan pada Gambar 13.7, yang dikenal sebagai arsitektur jaringan syaraf feedforward seperti ini. Diagram blok terdiri dari lima lapis, dan pada setiap lapis terdapat node. Terdapat dua macam node yaitu node adaptif dan node tetap.



Fungsi dari setiap lapis adalah sebagai berikut (Widodo, Thomas Sri; 2005):
Lapis 1 :
Setiap node i pada lapis 1 ini adalah node adaptif dengan fungsi node sebagai berikut:
O1i = mAi(x) untuk i = 1, 2 dan
O1i = mBi-2(y) untuk i = 3, 4
Dengan x dan y adalah masukan pada simpul i, Ai (atau Bi-2) adalah fungsi keanggotaan masing-masing simpul yang merupakan label linguistik yang terkait dengan node tersebut. Simpul O1,i berfungsi untuk menyatakan derajat keanggotaan tiap masukan terhadap himpunan fuzzy A1, A2, atau B1, B2. Fungsi keanggotaan yang dipakai adalah jenis generalized bell (gbell). Parameter a, b, c, pada fungsi keanggotaan gbell dinamakan parameter premis yang adaptif. Fungsi keanggotaan fuzzy input (premis) yang digunakan adalah fungsi Generalized-Bell:



Fungsi Generalized-Bell akan dipakai sebagai fungsi keanggotaan dari masukan, dan ditentukan sekehendak sebagai parameter awal a, b, c dan jumlah himpunan fuzzy input. Nantinya parameter premis a,b,c akan diubah dengan cara pembelajaran.
Lapis 2
Semua simpul pada lapisan ini adalah nonadaptif (parameter tetap). Fungsi simpul ini adalah mengalikan setiap sinyal masukan yang datang. Fungsi simpul:
O2i = wi = mAi(x).m Bi(y), i = 1,2                                                                  
Setiap node dari lapis ini menyatakan kuat penyulutan dari aturan.
Lapis 3
Tiap keluaran simpul menyatakan derajat pengaktifan  tiap aturan fuzzy. Fungsi ini dapat diperluas apabila bagian premis memiliki lebih dari dua himpunan fuzzy. Banyaknya simpul pada lapisan ini menunjukkan banyaknya aturan yang dibentuk. Fungsi perkalian yang digunakan adalah kata hubung and dengan menggunakan operator t-norm.
Setiap simpul pada lapisan ini adalah nonadaptif yang menampilkan fungsi derajat pengaktifan ternomalisasi (normalized firing strength) yaitu rasio keluaran simpul ke-i pada lapisan sebelumnya terhadap seluruh keluaran lapisan sebelumnya, dengan bentuk fungsi simpul: 


Apabila dibentuk lebih dari dua aturan, fungsi dapat diperluas dengan membagi wi dengan jumlah total w untuk semua aturan. Keluaran lapis ini disebut kuat penyulutan ternormalisasi
Lapis 4
Setiap node pada lapis ini adalah node adaptif dengan fungsi node:
O4,i = wi fi = wi(pix + qiy + ri )                                                                   
Dengan
Wi              :  kuat penyulutan ternormalisasi dari lapis 3
(pi, qi, ri ) :  himpunan parameter dari node. Parameter pada lapis ini dise-but sebagai parameter konsekuensi yang adaptif.

Lapis 5
Node tunggal pada lapis ini adalah node tetap berlabel £ yang menghitung keluaran keseluruhan sebagai penjumlahan semua sinyal yang datang. Fungsi simpul:


Jaringan adaptif dengan lima lapisan tersebut ekivalen dengan sistem inferensi fuzzy TSK.

Algoritma Pelatihan Hibrid
Pada struktur ANFIS Gambar 13.8, simpul adaptif terdapat pada lapisan pertama dan keempat. Simpul pada lapisan pertama mengandung parameter premis yang nonlinier sedangkan pada lapisan keempat mengandung parameter konsekuen yang linier. Untuk memperbaharui parameter itu, maka perlu metoda atau algoritma untuk itu. Metoda pembelajaran jaringan syaraf tiruan banyak macamnya, dan masing2 punya kelebihan dan kekurangan.
 
13.2  Peralatan
- PC multimedia yang sudah dilengkapi dengan OS Windows
- Perangkat Lunak Matlab yang dilengkapi dengan Tool Box DSP

13.3  Langkah Percobaan
13.3.1  Langkah Percobaan Fuzzy

1. Berikut ini akan dibuat pernyataan untuk pendefinisian. Fungsi keanggotaan dan aturan dasar (rule) yang mendefinisikan fungsi keluaran. Buatlah program berikut:

subplot(2,1,1), plotmf(fismat,'input',1)
subplot(2,1,2),gensurf(fismat)
showrule(fismat)
jalankan dan amati apa yang terjadi. Juga lihat pada command window, apa yang ditampilkan?.
2. Berikutnya, lakukan pembuatan program seperti berikut dan kemudian jalankan.

a=newfis('tipper');
a=addvar(a,'input','service',[0 10]);
a=addmf(a,'input',1,'poor','gaussmf',[1.5 0]);
a=addmf(a,'input',1,'good','gaussmf',[1.5 5]);
a=addmf(a,'input',1,'excellent','gaussmf',[1.5 10]);
plotmf(a,'input',1)
apa yang ditampilkan?.

13.3.2  Langkah Percobaan ANFIS
1. Berikutnya, lakukan pembuatan program seperti berikut dan kemudian jalankan.
x = (0:0.1:10); y = sin(2*x)./exp(x/5);
trnData = [x y];
numMFs = 5;
mfType = 'gbellmf';
epoch_n = 20;
in_fismat = genfis1(trnData,numMFs,mfType);
out_fismat = anfis(trnData,in_fismat,20);
plot(x,y,x,evalfis(x,out_fismat));
legend('Training Data','ANFIS Output');
jelaskan hasil tampilannya?.
Ulangi untuk program berikut:
x = (0:0.1:10)';
z = 0.1*sin(200*x)           % noise
y = sin(2*x)./exp(x/5)+z;  % sinyal + noise
trnData = [x y];
numMFs = 5;
mfType = 'gbellmf';
epoch_n = 20;
in_fismat = genfis1(trnData,numMFs,mfType);
out_fismat = anfis(trnData,in_fismat,20);
plot(x,y,x,evalfis(x,out_fismat));
                legend('Training Data','ANFIS Output');
jelaskan hasil tampilannya?.
Ulangi untuk program berikut:
x = (0:0.1:10);
z = 0.1*sin(200*x)            % noise
y = sin(2*x)./exp(x/5)+z;  % sinyal + noise
trnData = [x y];
numMFs = 5;
mfType = 'gbellmf';
epoch_n = 20000;
in_fismat = genfis1(trnData,numMFs,mfType);
out_fismat = anfis(trnData,in_fismat,20);
plot(x,y,x,evalfis(x,out_fismat));
                legend('Training Data','ANFIS Output');
jelaskan hasil tampilannya?.
2. Berikutnya, lakukan pembuatan program seperti berikut dan kemudian jalankan.
x=0:0.1:5;
mfp1 = [1 2 3];
mfp2 = mf2mf(mfp1,'gbellmf','trimf');
plot(x,gbellmf(x,mfp1),x,trimf(x,mfp2))
jelaskan hasil tampilannya?.
2. Berikutnya, lakukan pembuatan program seperti berikut dan kemudian jalankan.
for t=118:1117,
Data(t-117,:)=[x(t-18) x(t-12) x(t-6) x(t) x(t+6)];
end
trnData=Data(1:500, :);chkData=Data(501:end, :);
fismat = genfis1(trnData);
subplot(2,2,1)
plotmf(fismat,' input', 1)
subplot(2,2,2)
plotmf(fismat,' input', 2)
subplot(2,2,3)
plotmf(fismat,' input', 3)
subplot(2,2,4)
plotmf(fismat,' input', 4)
jelaskan hasil tampilannya?.
3. Berikutnya sebuah program yang harus anda coba, tapi sebelumnya anda harus menyiapkan hal-hal sebagai berikut:
1) buat sebuah file gambar dan beri nama: 'GambarParameter.jpg' dan ‘Gambar_Tunggu.jpg’, simpan   pada work dari MATLAB.
2)  Buat file data dengan nama DataPelatihan1 DataPelatihan2, DataPelatihan3,  DataPelatihan4, DataTarget.
3) buat program dengan nama Proses_Anfis.m, seperti ditunjukkan pada program di bawah. simpan pada work dari MATLAB.
4) Lalu buat program seperti berikut ini dengan nama: Anfis_Parameter.m, dan jalankan.
%--------------------------------------------------------
% Nama File : Anfis_Parameter.m
% Oleh      : Yulianto
%--------------------------------------------------------
winAnfisProses=figure(...
   'unit','point','position',[230 130 410 310],...
   'color',[.8 .8 .9],'menubar','none','resize','on',...
   'numbertitle','off','name','Paramter Anfis',...
   'WindowStyle','normal');
grafikAnfis21=axes('parent',winAnfisProses,...
   'units','point','position',[0 0 410 310],...
   'xgrid','on','ygrid','on','xcolor',[.8 .8 .9 ],...
   'ycolor',[.8 .8 .9 ],'fontsize',10,...
   'color',[.8 .8 .9]),'backgroundColor',[.8 .8 .9];
editInputWav1=uicontrol('parent',winAnfisProses,...
   'unit','point','position',[330 5 70 15],...
   'backgroundColor',[.5 .8 1],'string','JALANKAN',...
   'fontname','fixedsys','fontsize',9,'callback','Proses_Anfis');
editAnfis23=uicontrol('parent',winAnfisProses,...
   'unit','point','position',[143 198 60 18],'Style','Text',... 
   'backgroundColor',[1 1 1],'string','numMFs',...
   'fontname','arial black','fontsize',10)
editAnfis24=uicontrol('parent',winAnfisProses,...
   'unit','point','position',[205 198 60 17],...
   'Style','Edit','backgroundColor',[.2 .9 .2],...
   'string','2','fontname','arial black','fontsize',10);
editAnfis25=uicontrol('parent',winAnfisProses,...
   'unit','point','position',[143 180 60 18],'Style','Text',... 
   'backgroundColor',[1 1 1],'string','mfType',...
   'fontname','arial black','fontsize',10)
editAnfis26=uicontrol('parent',winAnfisProses,...
   'unit','point','position',[205 180 60 17],...
   'Style','Edit','backgroundColor',[.2 .9 .2],...
   'string','gbellmf','fontname','arial black','fontsize',10);
editAnfis27=uicontrol('parent',winAnfisProses,...
   'unit','point','position',[118 163 85 17],'Style','Text',... 
   'backgroundColor',[1 1 1],'string','num_epochs',...
   'fontname','arial black','fontsize',10)
editAnfis28=uicontrol('parent',winAnfisProses,...
   'unit','point','position',[205 163 60 17],...
   'Style','Edit','backgroundColor',[.2 .9 .2],...
   'string','500','fontname','arial black','fontsize',10);
editAnfis29=uicontrol('parent',winAnfisProses,...
   'unit','point','position',[139 146 65 18],'Style','Text',... 
   'backgroundColor',[1 1 1],'string','err_goal',...
   'fontname','arial black','fontsize',10)
editAnfis20=uicontrol('parent',winAnfisProses,...
   'unit','point','position',[205 146 60 17],...
   'Style','Edit','backgroundColor',[.2 .9 .2],...
   'string','0.001','fontname','arial black','fontsize',10);
[a,MAP]=IMREAD('GambarParameter.jpg'); image(a); grid off;


Program ke 2 yang harus anda simpan terlebih dahulu dalam work dari MATLAB.

%-----------------------------------------------------------------------------------------
% Nama File : Proses_Anfis.m
% Oleh          : Yulianto
%-----------------------------------------------------------------------------------------
Anfis1=str2num(get(editAnfis24Baru,'String')); num_mf = Anfis1;
Anfis2=get(editAnfis26Baru,'String');          mf_type= Anfis2;
Anfis3=str2num(get(editAnfis28Baru,'String')); num_epochs= Anfis3;
Anfis4=str2num(get(editAnfis20Baru,'String')); err_goal= Anfis4;
pilihanAnfisBaru=(get(editAnfis22Baru,'Value'));
load DataPelatihan1;DataLatih1=DataPelatihan1;
load DataPelatihan2;DataLatih2=DataPelatihan2;
load DataPelatihan3;DataLatih3=DataPelatihan3;
load DataPelatihan4;DataLatih4=DataPelatihan4;
load DataTarget;DataTarget=DataTarget;
t=length(DataTarget);ii=1:1:t;i=find(ii<=250);
u=DataLatih1(i);v=DataLatih2(i);w=DataLatih3(i);x=DataLatih4(i);
y=DataTarget(i);v=v(i);x=x(i);
pp=DataBaru1(i); qq=DataBaru2(i);rr=DataBaru3(i); ss=DataBaru4(i);
tt=DataCek(i)
trnData=[ u v w x y ];chkData=[ pp qq rr ss tt];

% Initialise the system matrix
close('Anfis_Parameter');
winAnfisProses1=figure('unit','point','position',[30 390 650 150],...
   'color',[.4 .8 .2],'menubar','none','resize','on',...
   'numbertitle','off','name','Data Masukan ANFIS',...
   'WindowStyle','normal');axis off;
subplot(1,4,1);plot(u,'r','linewidth',2);set(gca,'color',[.8 .6 .2]);
subplot(1,4,2);plot(v,'g','linewidth',2);set(gca,'color',[.8 .6 .2]);
subplot(1,4,3);plot(w,'b','linewidth',2);set(gca,'color',[.8 .6 .2]);
subplot(1,4,4);plot(x,'y','linewidth',2); set(gca,'color',[.8 .6 .2]);
winAnfisProses2=figure('unit','point','position',[30 200 650 150],...
   'color',[.8 .8 0],'menubar','none','resize','on',...
   'numbertitle','off','name','Fungsi Keanggotaan Awal',...
   'WindowStyle','normal');
fismat = genfis1(trnData,num_mf,mf_type);
subplot(1,4,1); plotmf(fismat, 'input', 1);set(gca,'color',[.8 .6 .6]);
subplot(1,4,2); plotmf(fismat, 'input', 2);set(gca,'color',[.8 .6 .6]);
subplot(1,4,3); plotmf(fismat, 'input', 3);set(gca,'color',[.8 .6 .6]);
subplot(1,4,4); plotmf(fismat, 'input', 4);set(gca,'color',[.8 .6 .6]);
close('Fungsi Keanggotaan Awal');
winAnfisProses3=figure('unit','point','position',[30 250 650 150],...
   'color',[.8 .8 0],'menubar','none','resize','on',...
   'numbertitle','off','name','Fungsi Keanggotaan Awal1',...
   'WindowStyle','normal');
subplot(1,4,1); plotmf(fismat, 'input', 1);set(gca,'color',[.8 .6 .6]);
subplot(1,4,2); plotmf(fismat, 'input', 2);set(gca,'color',[.8 .6 .6]);
subplot(1,4,3); plotmf(fismat, 'input', 3);set(gca,'color',[.8 .6 .6]);
subplot(1,4,4); plotmf(fismat, 'input', 4);set(gca,'color',[.8 .6 .6]);
pause(.3);close('Fungsi Keanggotaan Awal1');
winAnfisProses4=figure('unit','point','position',[30 300 650 150],...
   'color',[.8 .8 0],'menubar','none','resize','on',...
   'numbertitle','off','name','Fungsi Keanggotaan Awal2',...
   'WindowStyle','normal');
subplot(1,4,1); plotmf(fismat, 'input', 1);set(gca,'color',[.8 .6 .6]);
subplot(1,4,2); plotmf(fismat, 'input', 2);set(gca,'color',[.8 .6 .6]);
subplot(1,4,3); plotmf(fismat, 'input', 3);set(gca,'color',[.8 .6 .6]);
subplot(1,4,4); plotmf(fismat, 'input', 4);set(gca,'color',[.8 .6 .6]);
pause(.3);close('Fungsi Keanggotaan Awal2');
winAnfisProses5=figure('unit','point','position',[30 350 650 150],...
   'color',[.8 .8 0],'menubar','none','resize','on',...
   'numbertitle','off','name','Fungsi Keanggotaan Awal3',...
   'WindowStyle','normal');
subplot(1,4,1); plotmf(fismat, 'input', 1);set(gca,'color',[.8 .6 .6]);
subplot(1,4,2); plotmf(fismat, 'input', 2);set(gca,'color',[.8 .6 .6]);
subplot(1,4,3); plotmf(fismat, 'input', 3);set(gca,'color',[.8 .6 .6]);
subplot(1,4,4); plotmf(fismat, 'input', 4);set(gca,'color',[.8 .6 .6]);
pause(.5);
winAnfisProses6=figure('unit','point','position',[30 390 650 150],...
   'color',[.8 .8 0],'menubar','none','resize','on',...
   'numbertitle','off','name','Fungsi Keanggotaan Awa14',...
   'WindowStyle','normal');
subplot(1,4,1); plotmf(fismat, 'input', 1);set(gca,'color',[.8 .6 .6]);
subplot(1,4,2); plotmf(fismat, 'input', 2);set(gca,'color',[.8 .6 .6]);
subplot(1,4,3); plotmf(fismat, 'input', 3);set(gca,'color',[.8 .6 .6]);
subplot(1,4,4); plotmf(fismat, 'input', 4);set(gca,'color',[.8 .6 .6]);
close('Fungsi Keanggotaan Awal3');pause(2);
subplot(1,4,1); plotmf(fismat, 'input', 1);pause(2);set(gca,'color',[1 1 0]);
subplot(1,4,2); plotmf(fismat, 'input', 2);pause(2);set(gca,'color',[1 1 0]);
subplot(1,4,3); plotmf(fismat, 'input', 3);pause(2);set(gca,'color',[1 1 0]);
subplot(1,4,4); plotmf(fismat, 'input', 4);pause(2);set(gca,'color',[1 1 0]);
pause(.3);close('Data Masukan ANFIS');
winAnfisProses8=figure('unit','point','position',[220 200 280 150],...
   'color',[.4 .8 .2],'menubar','none','resize','on',...
   'numbertitle','off','name','Tunggu: Penentuan Keanggotaan Akhir',...
   'WindowStyle','normal');
[a,MAP]=IMREAD('gambarTunggu.jpg'); image(a); grid off;axis off;
winAnfisProses9=figure('unit','point','position',[30 200 650 150],...
   'color',[.4 .8 .2],'menubar','none','resize','on',...
   'numbertitle','off','name','Fungsi Keanggotaan Akhir',...
   'WindowStyle','normal');
[fismat1,error1,ss,fismat2,error2]=...
   anfis(trnData,fismat,[num_epochs],[],chkData);
subplot(1,4,1); plotmf(fismat2, 'input', 1);set(gca,'color',[.9 .6 .2]);
subplot(1,4,2); plotmf(fismat2, 'input', 2);set(gca,'color',[.9 .6 .2]);
subplot(1,4,3); plotmf(fismat2, 'input', 3);set(gca,'color',[.9 .6 .2]);
subplot(1,4,4); plotmf(fismat2, 'input', 4);set(gca,'color',[.9 .6 .2]);
close('Tunggu: Penentuan Keanggotaan Akhir');pause(3);
subplot(1,4,1); plotmf(fismat2, 'input', 1);pause(2);
set(gca,'color',[0 1 0]);
subplot(1,4,2); plotmf(fismat2, 'input', 2);pause(2);
set(gca,'color',[0 1 0]);
subplot(1,4,3); plotmf(fismat2, 'input', 3);pause(2);
set(gca,'color',[0 1 0]);
subplot(1,4,4); plotmf(fismat2, 'input', 4);pause(2);
set(gca,'color',[0 1 0]);
close('Fungsi Keanggotaan Akhir');close('Fungsi Keanggotaan Awa14');
winAnfisProses10=figure('unit','point','position',[220 200 280 150],...
   'color',[.4 .8 .2],'menubar','none','resize','on',...
   'numbertitle','off','name','Tunggu: Penentuan Keanggotaan Akhir',...
   'WindowStyle','normal');
[a,MAP]=IMREAD('GambarTunggu.jpg'); image(a); grid off;axis off;
winAnfisProses11=figure('unit','point','position',[30 390 650 150],...
   'color',[.8 .8 0],'menubar','none','resize','on',...
   'numbertitle','off','name','Error',...
   'WindowStyle','normal');
plot([error1 error2]);pause(2);
hold on; plot([error1 error2], 'o');set(gca,'color',[1 1 0]);
xlabel('Epochs');ylabel('RMSE (Root Mean Squared Error)');
title('Error Curves');pause(5);
anfis_output = evalfis([trnData(:,1:4); chkData(:,1:4)],fismat2,num_epochs);
x=length(anfis_output);xx=1:1:x;
winAnfisProses19=figure('unit','point','position',[30 30 650 150],...
   'color',[.4 .8 .2],'menubar','none','resize','on',...
   'numbertitle','off','name','Keluaran dan Error',...
   'WindowStyle','normal');
y=[y;y];
subplot(211),
plot(xx,anfis_output);
xlabel('Time (sec)'); title('MG Time Series and ANFIS Prediction');
subplot(212),
plot(xx, y - anfis_output);
close('Tunggu: Penentuan Keanggotaan Akhir');
ErrorAnfisMak=max(y - anfis_output);ErrorAnfisMin=min(y - anfis_output);
MSE_FFT=mse(y - anfis_output)
winAnfisError=figure('unit','point','position',[220 208 280 150],...
   'color',[.4 .8 .2],'menubar','none','resize','on',...
   'numbertitle','off','name','Error Maksimum Yang Terjadi',...
   'WindowStyle','normal');
editAnfisError1=uicontrol('parent',winAnfisError,...
   'unit','point','position',[0 127 110 20],'Style','Text',... 
   'backgroundColor',[.4 .8 .2],'string','Error Maksimum :',...
   'fontname','arial black','fontsize',10)
editAnfisError2=uicontrol('parent',winAnfisError,...
   'unit','point','position',[110 127 100 20],'Style','Edit',... 
   'backgroundColor',[.9 .9 0],'string','Error',...
   'fontname','arial black','fontsize',10)
set(editAnfisError2,'String',num2str(ErrorAnfisMak));
editAnfisError1=uicontrol('parent',winAnfisError,...
   'unit','point','position',[0 110 107 20],'Style','Text',... 
   'backgroundColor',[.4 .8 .2],'string','Error Manimum :',...
   'fontname','arial black','fontsize',10)
editAnfisError2=uicontrol('parent',winAnfisError,...
   'unit','point','position',[110 107 100 20],'Style','Edit',... 
   'backgroundColor',[.9 .9 0],'string','Error',...
   'fontname','arial black','fontsize',10)
set(editAnfisError2,'String',num2str(ErrorAnfisMin));
editAnfisError1=uicontrol('parent',winAnfisError,...
   'unit','point','position',[0 20 107 20],'Style','Text',... 
   'backgroundColor',[.4 .8 .2],'string','M.S.E.  :',...
   'fontname','arial black','fontsize',10)
editAnfisError2=uicontrol('parent',winAnfisError,...
   'unit','point','position',[110 20 100 20],'Style','Edit',... 
   'backgroundColor',[.9 .9 0],'string','Error',...
   'fontname','arial black','fontsize',10)
set(editAnfisError2,'String',num2str(MSE_FFT));
editAnfisError3=uicontrol('parent',winAnfisError,...
   'unit','point','position',[40 40 170 40],'Style','Text',... 
   'backgroundColor',[.4 .8 .2],'string','Error',...
   'fontname','arial black','fontsize',14)
if MSE_FFT<4.5e-10
   Keputusan='WHEEZING ??.. YESS'
else
   Keputusan='WHEEZING ??.. NO'
end;
set(editAnfisError3,'String',num2str(Keputusan));
close('Error Maksimum Yang Terjadi');
close('Error');close('Keluaran dan Error');

13.4 Analisis Data
Anda harus menjelaskan tentang Fuzzy, dan aplikasinya. Jelaskan hasil pemahaman anda dari hasil uji coba di atas, akan lebih mudah jika anda menggunakan flow chart dalam menjelaskan program di atas.

13.5  Tugas
1. Beri satu contoh aplikasi fuzzy sederhana.
2. Rancanag sebuah filter untuk membuang derau dengan menggnakan proggram fuzzy.
3. Buatlah sebuah program fuzzy yang dapat digunakan untuk mengidentifikasi sinyal suara dengan menyebutkan sebuah abjad dari 26 abjad.
4. Buatlah prgram fuzzy yang dapat memanggil sebuah lagu dan sekaligus mengaktifkan lagu tersebut.