1. Beranda.m (Antarmuka Beranda) - Implementasi Algoritma K-Nearest Neighbor untuk Mengklasifikasikan Motif Batik Besurek Bengkulu
LAMPIRAN LISTING PROGRAM
1. Beranda.m (Antarmuka Beranda) function varargout = Beranda(varargin)
gui_Singleton = 1; gui_State = struct( 'gui_Name' , mfilename, ...
'gui_Singleton' , gui_Singleton, ... 'gui_OpeningFcn' , @Beranda_OpeningFcn, ... 'gui_OutputFcn' , @Beranda_OutputFcn, ... 'gui_LayoutFcn' , [] , ... 'gui_Callback' , []); if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end % End initialization code - DO NOT EDIT % --- Executes just before Beranda is made visible. function Beranda_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn.
% hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to Beranda (see VARARGIN) % Choose default command line output for Beranda
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes Beranda wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = Beranda_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure
varargout{1} = handles.output;
% ------------------------------------------------------------------ function Beranda_Callback(hObject, eventdata, handles) % hObject handle to Beranda (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% -------------------------------------------------------------------
function Bantuan_Callback(hObject, eventdata, handles)
Bantuan close Beranda
% hObject handle to Bantuan (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% -------------------------------------------------------------------
function Pelatihan_Callback(hObject, eventdata, handles)Pelatihan close Beranda
% hObject handle to Pelatihan (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% -------------------------------------------------------------------
function Pengujian_Callback(hObject, eventdata, handles)Pengujian close Beranda
% hObject handle to Pengujian (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% -------------------------------------------------------------------
- function Keluar_Callback(hObject, eventdata, handles)
choice= questdlg ( 'Apakah Anda Ingin
Keluar?' , 'Keluar' , 'Ya' , 'Tidak' , 'Tidak' ); switch choice case 'Ya'
close all ;
end % hObject handle to Keluar (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes during object creation, after setting all properties. function axes1_CreateFcn(hObject, eventdata, handles)
clear; citra=imread( 'FASILKOMTI.jpg' ); citra=uint8(citra); imshow(citra);
% hObject handle to axes1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: place code in OpeningFcn to populate axes1 % --- Executes during object creation, after setting all properties. function axes3_CreateFcn(hObject, eventdata, handles)
clear; citra=imread( 'batik1.jpg' ); citra=uint8(citra); imshow(citra);
% hObject handle to axes3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: place code in OpeningFcn to populate axes3 % --- Executes during object creation, after setting all properties. function axes4_CreateFcn(hObject, eventdata, handles)
clear; citra=imread( 'batik2.jpg' ); citra=uint8(citra); imshow(citra);
2. Pelatihan.m (Antarmuka Pelatihan) function varargout = Pelatihan(varargin)
gui_Singleton = 1; gui_State = struct( 'gui_Name' , mfilename, ...
'gui_Singleton' , gui_Singleton, ... 'gui_OpeningFcn' , @Pelatihan_OpeningFcn, ... 'gui_OutputFcn' , @Pelatihan_OutputFcn, ... 'gui_LayoutFcn' , [] , ... 'gui_Callback' , []); if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end % End initialization code - DO NOT EDIT % --- Executes just before Pelatihan is made visible. function Pelatihan_OpeningFcn(hObject, eventdata, handles, varargin)
set(handles.deteksi, 'Enable' , 'Off' );
% Choose default command line output for Pelatihan
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes Pelatihan wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line.
function varargout = Pelatihan_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structurevarargout{1} = handles.output;
% -------------------------------------------------------------------
- function Untitled_1_Callback(hObject, eventdata, handles)
Beranda close Pelatihan
% hObject handle to Untitled_1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% -------------------------------------------------------------------
- function Bantuan_Callback(hObject, eventdata, handles)
Bantuan close Pelatihan
% hObject handle to Bantuan (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% -------------------------------------------------------------------
- function Pelatihan_Callback(hObject, eventdata, handles)
% hObject handle to Pelatihan (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% -------------------------------------------------------------------
- function Pengujian_Callback(hObject, eventdata, handles)
Pengujian close Pelatihan
% hObject handle to Pengujian (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% -------------------------------------------------------------------
- function Keluar_Callback(hObject, eventdata, handles)
choice= questdlg ( 'Apakah Anda Ingin
Keluar?' , 'Keluar' , 'Ya' , 'Tidak' , 'Tidak' ); switch choice case 'Ya'
close all ;
end % hObject handle to Keluar (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on selection change in motif. function motif_Callback(hObject, eventdata, handles) % --- Executes during object creation, after setting all properties. function motif_CreateFcn(hObject, eventdata, handles) % hObject handle to motif (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: popupmenu controls usually have a white background on Windows.
% See ISPC and COMPUTER. if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end % Hint: popupmenu controls usually have a white background on Windows.
% See ISPC and COMPUTER. if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end % --- Executes on button press in load. function load_Callback(hObject, eventdata, handles)
value1 = get(handles.motif, 'value' )
if value1 == 1
value1 = 'Relung Paku' gb4=imread( 'RelungPaku1.jpg' ); gb5=imread( 'RelungPaku2.jpg' ); gb6=imread( 'RelungPaku3.jpg' ); axes(handles.axes1);imshow(gb4) axes(handles.axes2);imshow(gb5) axes(handles.axes3);imshow(gb6)
elseif value1 == 2
value1 = 'Bunga Rafflesia' gb7=imread( 'Rafflesia1.jpg' ); gb8=imread( 'Rafflesia2.jpg' ); gb9=imread( 'Rafflesia3.jpg' ); axes(handles.axes1);imshow(gb7) axes(handles.axes2);imshow(gb8) axes(handles.axes3);imshow(gb9)
elseif value1 == 3
value1 = 'Burung Kuau' gb10=imread( 'BurungKuau1.jpg' ); gb11=imread( 'BurungKuau2.jpg' ); gb12=imread( 'BurungKuau3.jpg' ); axes(handles.axes1);imshow(gb10) axes(handles.axes2);imshow(gb11) axes(handles.axes3);imshow(gb12)
else
value1 = 'Rembulan' gb13=imread( 'Rembulan1.jpg' ); gb14=imread( 'Rembulan2.jpg' ); gb15=imread( 'Rembulan3.jpg' ); axes(handles.axes1);imshow(gb13) axes(handles.axes2);imshow(gb14) axes(handles.axes3);imshow(gb15)
end %guidata(hObject, handles); % hObject handle to load (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end % --- Executes on button press in reset. function reset_Callback(hObject, eventdata, handles)
axes(handles.axes1); imshow(1); axes(handles.axes2); imshow(1); axes(handles.axes3); imshow(1); set(handles.slider1, 'Value' ,0); set(handles.text4, 'string' ,0); axes(handles.axes6); imshow(1); set(handles.slider2, 'Value' ,0); set(handles.text5, 'string' ,0); axes(handles.axes7); imshow(1); set(handles.slider3, 'Value' ,0); set(handles.text6, 'string' ,0); axes(handles.axes8); imshow(1); guidata(hObject,handles); set(handles.deteksi, 'Enable' , 'Off' );
% hObject handle to reset (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER. if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end % --- Executes on slider movement. function slider1_Callback(hObject, eventdata, handles)
thres = get(handles.slider1, 'value' ); handles.thres = round(thres); guidata(hObject, handles); set(handles.text4, 'string' ,handles.thres); citra = getimage(handles.axes1); citra= rgb2gray(citra); citra_gray=double(citra); [b k]= size(citra_gray);
for x=1:b for y=1:k if citra_gray(x,y)<thres
citra_threshold_batik(x,y)=1;
elseif citra_gray(x,y)>=thres
citra_threshold_batik(x,y)=0; end end end
citra_threshold_batik; handles.citra_tres_batik1=citra_threshold_batik; guidata(hObject, handles); axes(handles.axes6); imshow(citra_threshold_batik); % --- Executes during object creation, after setting all properties.
function slider1_CreateFcn(hObject, eventdata, handles) % hObject handle to slider1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: slider controls usually have a light gray background. if isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' ,[.9 .9 .9]);
end % --- Executes on slider movement. function slider2_Callback(hObject, eventdata, handles)
thres2 = get(handles.slider2, 'value' ); handles.thres = round(thres2); guidata(hObject, handles); set(handles.text5, 'string' ,handles.thres); citra2 = getimage(handles.axes2); citra2= rgb2gray(citra2); citra_gray=double(citra2); [b k]= size(citra_gray);
for x=1:b for y=1:k if citra_gray(x,y)<thres2
citra_threshold_batik(x,y)=1;
elseif citra_gray(x,y)>=thres2
citra_threshold_batik(x,y)=0;
end end end
citra_threshold_batik; handles.citra_tres_batik2=citra_threshold_batik; guidata(hObject, handles); axes(handles.axes7); imshow(citra_threshold_batik); % --- Executes during object creation, after setting all properties.
function slider2_CreateFcn(hObject, eventdata, handles) % hObject handle to slider2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called
% Hint: slider controls usually have a light gray background. if isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' ,[.9 .9 .9]);
end % --- Executes on slider movement. function slider3_Callback(hObject, eventdata, handles)
thres3 = get(handles.slider3, 'value' ); handles.thres = round(thres3); guidata(hObject, handles); set(handles.text6, 'string' ,handles.thres); citra3 = getimage(handles.axes3); citra3= rgb2gray(citra3); citra_gray=double(citra3); [b k]= size(citra_gray);[b k]= size(citra_gray);
for x=1:b for y=1:k if citra_gray(x,y)<thres3
citra_threshold_batik(x,y)=1;
elseif citra_gray(x,y)>=thres3
citra_threshold_batik(x,y)=0;
end end end
citra_threshold_batik handles.citra_tres_batik3=citra_threshold_batik; guidata(hObject, handles); axes(handles.axes8); imshow(citra_threshold_batik); set(handles.deteksi, 'Enable' , 'on' );
% hObject handle to slider3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes during object creation, after setting all properties. function slider3_CreateFcn(hObject, eventdata, handles) % hObject handle to slider3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: slider controls usually have a light gray background. if isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' ,[.9 .9 .9]);
end % --- Executes on button press in deteksi. function deteksi_Callback(hObject, eventdata, handles)
citra1=getimage(handles.axes6); citra2=getimage(handles.axes7); citra3=getimage(handles.axes8); citra1rb=edge(citra1, 'roberts' ,0.1);
citra2rb=edge(citra2, 'roberts' ,0.1); citra3rb=edge(citra3, 'roberts' ,0.1); axes(handles.axes6);imshow(citra1rb); axes(handles.axes7);imshow(citra2rb); axes(handles.axes8);imshow(citra3rb); jenismotif=get(handles.motif, 'String' ); jenismotif=jenismotif{get(handles.motif, 'Value' )}; a = double(getimage(handles.axes6)); b = double(getimage(handles.axes7)); c = double(getimage(handles.axes8)); motif1 =[reshape(a, 1, 10000); reshape(b, 1, 10000); reshape(c, 1, 10000)];
if (strcmp(jenismotif, 'Relung Paku' ))
xlswrite( 'Data.xlsx' ,motif1, 'Motif' , 'C5' );
elseif (strcmp(jenismotif, 'Bunga Rafflesia' ))
xlswrite( 'Data.xlsx' ,motif1, 'Motif' , 'C8' );
elseif (strcmp(jenismotif, 'Burung Kuau' ))
xlswrite( 'Data.xlsx' ,motif1, 'Motif' , 'C11' );
else
xlswrite( 'Data.xlsx' ,motif1, 'Motif' , 'C14' );
end
h= msgbox( 'Data disimpan' , 'Berhasil' );
3. Pengujian.m (Antarmuka Pengujian) function varargout = Pengujian(varargin)
gui_Singleton = 1; gui_State = struct( 'gui_Name' , mfilename, ...
'gui_Singleton' , gui_Singleton, ... 'gui_OpeningFcn' , @Pengujian_OpeningFcn, ... 'gui_OutputFcn' , @Pengujian_OutputFcn, ... 'gui_LayoutFcn' , [] , ... 'gui_Callback' , []); if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end % End initialization code - DO NOT EDIT % --- Executes just before Pengujian is made visible. function Pengujian_OpeningFcn(hObject, eventdata, handles, varargin)
set(handles.deteksitepi, 'Enable' , 'off' ); set(handles.kenali, 'Enable' , 'off' );
% This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to Pengujian (see VARARGIN) % Choose default command line output for Pengujian
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes Pengujian wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line.
function varargout = Pengujian_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structurevarargout{1} = handles.output;
% -------------------------------------------------------------------
- function Beranda_Callback(hObject, eventdata, handles)
Beranda close Pengujian
% hObject handle to Beranda (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% -------------------------------------------------------------------
- function Bantuan_Callback(hObject, eventdata, handles)
Bantuan close Pengujian
% hObject handle to Bantuan (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% -------------------------------------------------------------------
- function Pelatihan_Callback(hObject, eventdata, handles)
Pelatihan close Pengujian
% hObject handle to Pelatihan (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% -------------------------------------------------------------------
- function Pengujian_Callback(hObject, eventdata, handles)
% hObject handle to Pengujian (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% -------------------------------------------------------------------
- function Keluar_Callback(hObject, eventdata, handles)
choice= questdlg ( 'Apakah Anda Ingin
Keluar?' , 'Keluar' , 'Ya' , 'Tidak' , 'Tidak' ); switch choice case 'Ya'
close all ;
end % hObject handle to Keluar (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in buka. function buka_Callback(hObject, eventdata, handles)
[nama_file,nama_path] = uigetfile({ '*.jpg' , 'File jpeg (*.jpg)' }, 'Buka
File Motif Batik' ); if ~isequal(nama_file,0)
handles.citra=imread(fullfile(nama_path,nama_file)); guidata(hObject,handles); axes(handles.axes1); imshow(handles.citra);
else return ; end ; % hObject handle to buka (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in kenali. function kenali_Callback(hObject, eventdata, handles)
tStart=tic;
%B adalah matriks vektor untuk menampung citra uji
B = xlsread( 'Data.xlsx' , 'Motif' , 'C25:NTR25' ); E = xlsread( 'Data.xlsx' , 'Motif' , 'C5:NTR5' ); panjang = length(E); jumlah = 0;
for i = 1:panjang
jumlah = (E(1,i) - B(1,i))^2 + jumlah;
end
xlswrite( 'Data.xlsx' ,jumlah, 'ED' , 'B5' ); F = xlsread( 'Data.xlsx' , 'Motif' , 'C6:NTR6' ); panjang = length(F); jumlah = 0;
for i = 1:panjang
jumlah = (F(1,i) - B(1,i))^2 + jumlah;
end
xlswrite( 'Data.xlsx' ,jumlah, 'ED' , 'B6' ); G = xlsread( 'Data.xlsx' , 'Motif' , 'C7:NTR7' ); panjang = length(G); jumlah = 0;
for i = 1:panjang
jumlah = (G(1,i) - B(1,i))^2 + jumlah;
end
xlswrite( 'Data.xlsx' ,jumlah, 'ED' , 'B7' ); H = xlsread( 'Data.xlsx' , 'Motif' , 'C8:NTR8' ); panjang = length(H); jumlah = 0;
for i = 1:panjang
jumlah = (H(1,i) - B(1,i))^2 + jumlah;
end
xlswrite( 'Data.xlsx' ,jumlah, 'ED' , 'B8' ); K = xlsread( 'Data.xlsx' , 'Motif' , 'C9:NTR9' ); panjang = length(K); jumlah = 0;
for i = 1:panjang
jumlah = (K(1,i) - B(1,i))^2 + jumlah;
end
xlswrite( 'Data.xlsx' ,jumlah, 'ED' , 'B9' ); L = xlsread( 'Data.xlsx' , 'Motif' , 'C10:NTR10' ); panjang = length(L); jumlah = 0;
for i = 1:panjang
jumlah = (L(1,i) - B(1,i))^2 + jumlah;
end
xlswrite( 'Data.xlsx' ,jumlah, 'ED' , 'B10' ); M = xlsread( 'Data.xlsx' , 'Motif' , 'C11:NTR11' ); panjang = length(M); jumlah = 0;
for i = 1:panjang
jumlah = (M(1,i) - B(1,i))^2 + jumlah;
end
xlswrite( 'Data.xlsx' ,jumlah, 'ED' , 'B11' ); N = xlsread( 'Data.xlsx' , 'Motif' , 'C12:NTR12' ); panjang = length(N); jumlah = 0;
for i = 1:panjang
jumlah = (N(1,i) - B(1,i))^2 + jumlah;
end
xlswrite( 'Data.xlsx' ,jumlah, 'ED' , 'B12' ); P = xlsread( 'Data.xlsx' , 'Motif' , 'C13:NTR13' ); panjang = length(P); jumlah = 0;
for i = 1:panjang
jumlah = (P(1,i) - B(1,i))^2 + jumlah;
end
xlswrite( 'Data.xlsx' ,jumlah, 'ED' , 'B13' ); Q = xlsread( 'Data.xlsx' , 'Motif' , 'C14:NTR14' ); panjang = length(Q); jumlah = 0;
for i = 1:panjang
jumlah = (Q(1,i) - B(1,i))^2 + jumlah;
end
xlswrite( 'Data.xlsx' ,jumlah, 'ED' , 'B14' ); R = xlsread( 'Data.xlsx' , 'Motif' , 'C15:NTR15' ); panjang = length(R); jumlah = 0;
for i = 1:panjang
jumlah = (R(1,i) - B(1,i))^2 + jumlah; end
xlswrite( 'Data.xlsx' ,jumlah, 'ED' , 'B15' ); S = xlsread( 'Data.xlsx' , 'Motif' , 'C16:NTR16' ); panjang = length(S); jumlah = 0;
for i = 1:panjang
jumlah = (S(1,i) - B(1,i))^2 + jumlah;
end
xlswrite( 'Data.xlsx' ,jumlah, 'ED' , 'B16' );
%untuk Ascending hasil Euclidean Distance dan kelas
arrayA = xlsread( 'Data.xlsx' , 'ED' , 'B5:B16' ) [numB,txtB,rawB] = xlsread( 'Data.xlsx' , 'ED' , 'A5:A16' ) arrayTemp = zeros(12,1) [numD,txtD,rawD] = xlsread( 'Data.xlsx' , 'ED' , 'D5:D16' ) n = 12;
for i = n : -1 : 1 for j = 1 : i -1 if arrayA(j)>arrayA(j+1)
temp = arrayA(j); arrayA(j) = arrayA(j+1); arrayA(j+1) = temp;
end end end
arrayC = arrayTemp + arrayA disp(arrayC) xlswrite( 'Data.xlsx' ,arrayC, 'ED' , 'C5:C16' ) arrayA = xlsread( 'Data.xlsx' , 'ED' , 'B5:B16' )
for i = 1:12 for j = 1:12 if arrayC(i) == arrayA(j)
rawD(i) = rawB(j)
end end end
xlswrite( 'Data.xlsx' ,rawD, 'ED' , 'D5:D16' )
%K-NN %ambil kolom, masukkan ke variabel rawD
[txtD, rawD] = xlsread( 'Data.xlsx' , 'ED' , 'D5:D16' ); deretAngka = xlsread( 'Data.xlsx' , 'ED' , 'C5:C16' ); k = get(handles.nilaik, 'value' );
if k == 1
k = 1
elseif k == 2
k = 3
elseif k == 3 k = 5
else
k = 7
end % variabel penampung data unique dari rawD
dataA = {};
% variabel penampung jumlah dari setiap data unique di dataA
dataIndA = [];
% variabel penampung data angka uniqe di dataA
dataAngkaA = [];
for i = 1:k % mengecek apakah elemen sudah ada dalam dataA
exist = false; panjangDataA = length(dataA);
for j = 1:panjangDataA % jika elemen sudah ada if (strcmp(rawD(i), dataA(j)))
% nyatakan bahwa elemen sudah ada
exist = true;
% jika elemen sudah eksis, maka naikkan jumlah elemen di dalam % array dataIndA
dataIndA(j) = dataIndA(j) + 1; dataAngkaA(j) = dataAngkaA(j) + deretAngka(i);
end end % jika elemen belum ada, masukkan elemen baru ke dataA if (~exist)
dataA(end + 1) = rawD(i);
% dan buat jumlah elemennya 1
dataIndA(end + 1) = 1; dataAngkaA(end + 1) = deretAngka(i);
%disp(deretAngka(i)); end end
panjang = length(dataIndA); maks = 1; indeksTerbanyakElemen = 1;
% variabel penampung data angka uniqe di dataA %mencari rata-rata for i = 1:panjang if (dataIndA(i) > 1)
dataAngkaA(i) = dataAngkaA(i) / dataIndA(i);
end end % mencari index yang berisi bilangan terbesar dalam dataIndA % yang berarti index tersebut memiliki elemen paling banyak for i = 1:panjang if (dataIndA(i) > maks)
maks = dataIndA(i); indeksTerbanyakElemen = i;
end end indeksNilaiTerkecil = indeksTerbanyakElemen;
%jika ada lebih dari 1 indeks yang memiliki terbanyak for i = 1:panjang % jika yang dicek adalah indeks yang telah ditentukan, lanjutkan. if i == indeksTerbanyakElemen continue ; end %jika ada indeks yang memiliki jumlah elemen sama if (dataIndA(i) == dataIndA(indeksTerbanyakElemen))
%maka indeks teratas adalah indeks dengan nilai rata-rata terkecil
if (dataAngkaA(i) < dataAngkaA(indeksTerbanyakElemen))
indeksNilaiTerkecil = i;
end end end
hasil = rawD(indeksNilaiTerkecil); set(handles.klasifikasi, 'String' ,hasil); guidata(hObject, handles); waktupengujian = toc(tStart); set(handles.waktu, 'string' ,waktupengujian); set(handles.deteksitepi, 'Enable' , 'Off' );
% Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end % Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER. if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end % --- Executes on selection change in nilaik. function nilaik_Callback(hObject, eventdata, handles)
set(handles.kenali, 'Enable' , 'on' );
% hObject handle to nilaik (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
% Hints: contents = get(hObject,'String') returns nilaik contents as
cell array % contents{get(hObject,'Value')} returns selected item from nilaik % --- Executes during object creation, after setting all properties. function nilaik_CreateFcn(hObject, eventdata, handles) % hObject handle to nilaik (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called% Hint: popupmenu controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' , 'white' );
end % --- Executes on button press in ekstraksiciri. function ekstraksiciri_Callback(hObject, eventdata, handles) % hObject handle to ekstraksiciri (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on button press in hapus. function hapus_Callback(hObject, eventdata, handles)
axes(handles.axes1); imshow(1); set(handles.slider2, 'Value' ,0); set(handles.text9, 'string' ,0); set(handles.nilaik, 'Value' ,1); set(handles.klasifikasi, 'String' , '' , 'Enable' , 'on' ); set(handles.waktu, 'String' , '' , 'Enable' , 'on' ); set(handles.deteksitepi, 'Enable' , 'Off' ); set(handles.kenali, 'Enable' , 'Off' );
% hObject handle to hapus (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % --- Executes on slider movement. function slider2_Callback(hObject, eventdata, handles)
thres = get(handles.slider2, 'value' ); handles.thres = round(thres); guidata(hObject, handles); set(handles.text9, 'string' ,handles.thres); citra_gray=rgb2gray(handles.citra); citra_gray=double(citra_gray); [b k]= size(citra_gray);
for x=1:b for y=1:k if citra_gray(x,y)<thres
citra_threshold_batik(x,y)=1;
elseif citra_gray(x,y)>=thres
citra_threshold_batik(x,y)=0;
end end end
citra_threshold_batik; handles.citra_tres_batik1=citra_threshold_batik; guidata(hObject, handles); axes(handles.axes1); imshow(citra_threshold_batik); set(handles.deteksitepi, 'Enable' , 'on' ); % --- Executes during object creation, after setting all properties.
function slider2_CreateFcn(hObject, eventdata, handles) % hObject handle to slider2 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: slider controls usually have a light gray background. if isequal(get(hObject, 'BackgroundColor' ),
get(0, 'defaultUicontrolBackgroundColor' )) set(hObject, 'BackgroundColor' ,[.9 .9 .9]);
end % --- Executes on button press in deteksitepi. function deteksitepi_Callback(hObject, eventdata, handles)
citra1=getimage(handles.axes1); citra1rb=edge(citra1, 'roberts' ,0.1); axes(handles.axes1);imshow(citra1rb); uji = double(getimage(handles.axes1)); motif = reshape(uji, 1, 10000); xlswrite( 'Data.xlsx' ,motif, 'Motif' , 'C25' ); h= msgbox( 'Data disimpan' , 'Berhasil' );
Nama : Westhyma Sibarani Alamat : Jl.Pambangunan No.122,Kampus USU, Medan Telp/Hp : 082364509288 Email : westhyma@gmail.com
Pendidikan
1998-2004 : SD Sint Carolus, Bengkulu 2004=2007 : SMP Sint Carolus, Bengkulu 2007-2010 : SMAK Sint Carolus, Bengkulu 2010-2015 : Universitas Sumatera Utara (Ilmu Komputer-FasilkomTI)