% APRENDIZAJE AUTOMÁTICO (G. Pajares y J. M. de la Cruz, Eds.)
% Editorial: RA-MA
% Capítulo 5: Máquinas de Vectores Soporte
% Autores: Jesús Antonio Vega Sánchez y Sebastián Dormido Canto

function clasificasvm

%Obtiene Entrenamiento
psvm=get(findobj('Tag','PushButtonEntrena'),'UserData');
svmC=psvm{1};
nsvC=psvm{2};
bC=psvm{3};

%Obtiene Wavelets de Señales de Test
waveT=get(findobj('Tag','ListBoxTest'),'UserData');
len=get(findobj('Tag','PushButtonGenera'),'UserData');
lenE=ceil(len*0.6);
lenT=len-lenE;

%Obtiene Kernel y Parámetros
lkernel=get(findobj('Tag','PopupMenuKernel'),'String');
ikernel=get(findobj('Tag','PopupMenuKernel'),'Value');
kernel=deblank(lkernel(ikernel,:));

param=get(findobj('Tag','EditTextParametros'),'String');
if not(isempty(param))
   param=eval(param);
else
   param=[1 1];
end;

%Obtiene tiempo actual
tiempo=cputime;

%Clasifica
[correctas,auxsal,resultado]=clasifica(5,waveT,svmC,nsvC,bC,kernel,param);

%Obtiene tiempo de clasificación
tpc=(cputime-tiempo);%/sum(lenT);
set(findobj('Tag','StaticTextTiempo'),'String',num2str(tpc));
set(findobj('Tag','StaticTextEstado'),'string','Clasificación');

%Calcular Clasificación Correcta
aciertos1=length(find(resultado(1:lenT(1),2)==1));
aciertos2=length(find(resultado(1+lenT(1):lenT(1)+lenT(2),2)==2));
aciertos3=length(find(resultado(1+lenT(1)+lenT(2):lenT(1)+lenT(2)+lenT(3),2)==3));
aciertos4=length(find(resultado(1+lenT(1)+lenT(2)+lenT(3):lenT(1)+lenT(2)+lenT(3)+lenT(4),2)==4));
aciertos5=length(find(resultado(1+lenT(1)+lenT(2)+lenT(3)+lenT(4):lenT(1)+lenT(2)+lenT(3)+lenT(4)+lenT(5),2)==5));
exito=(aciertos1+aciertos2+aciertos3+aciertos4+aciertos5)/sum(lenT);
exito=sprintf('%2.2f',exito*100);

%Muestra Resultado
ctest=get(findobj('Tag','ListBoxTest'),'String');
ctest=ctest(:,1:8);
resultado=num2str(resultado(:,2));
sr=[];
for i=1:size(resultado,1)
   switch resultado(i)
          case {'1'}
            sr=[sr;'> BKG'];
          case '2'
            sr=[sr;'> COF'];
          case '3'
            sr=[sr;'> ECH'];
          case '4'
            sr=[sr;'> NBI'];
          case '5'
            sr=[sr;'> STR'];
          otherwise
				sr=[sr;'> ???'];
        end;
end;
set(findobj('Tag','ListBoxTest'),'String',[ctest,sr]);
set(findobj('Tag','StaticTextExito'),'String',[exito,'%']);
