%
% [text1,pobL,text2,pobC,text3,pobB1,postB1,text4,pobB2,postB2]=Discrim(x,X,vector_n)
%
% La funcion Discrim calcula los Discriminantes Lineal, Cuadratico y de Bayes para cualquier 
% numero K de poblaciones y clasifica x en alguna de las K poblaciones.
%
% Variables de entrada:
%   x Observacion a clasificar: matriz mxp de nuevas observaciones 
%   vector_n Vector de dimension Kx1, que contiene n1, n2, ..., nK, siendo 
%            ni el numero de observaciones en la poblacion i, para
%            i=1,2,...,K.
%   X Matriz de datos de dimension nxp, con n=n1+n2+...+nK, que contiene
%   las matrices de datos X1, X2, ..., XK de las poblaciones puestas en
%   orden una encima de la otra.
%
function [text1,pobL,text2,pobC,text3,pobB1,postB1,text4,pobB2,postB2]=Discrim(x,X,vector_n)
K = length(vector_n) ;
[n,p] = size(X) ;
%--------------------------------------------
% Representacion de los individuos utilizando MANOVA 
% (debe haber dos o mas ejes canonicos)
%
if min(p,K-1)>1
   hold off
   [mY,V,B,W,percent,Test1,texto1,Test2,texto2]=canp(X,vector_n);
   hold on
   y=x*V;
   plot(y(:,1),y(:,2),'<k','MarkerSize',6,'MarkerFaceColor',[0 0 0])
end    
%----------------------------------------------
% identificador de los grupos
grupo=[];
for i=1:K
    grupo=[grupo; i*ones(vector_n(i),1)];
end  
%-----------------------------------------------
% Discriminante Lineal
[pobL,errorL] = classify(x,X,grupo,'linear');
text1=char('Disciminante Lineal. Error: ',num2str(errorL));
% Discriminante Cuadratico
[pobC,errorC] = classify(x,X,grupo,'quadratic');
text2=char('Disciminante Cuadratico. Error: ',num2str(errorC));
% Discriminante Lineal de Bayes
[pobB1,errorB1,postB1] = classify(x,X,grupo,'linear','empirical');
text3=char('Disciminante Bayes (lineal). Error: ',num2str(errorB1));
% Discriminante Cuadratico de Bayes
[pobB2,errorB2,postB2] = classify(x,X,grupo,'quadratic','empirical');
text4=char('Disciminante Bayes (cuadratico). Error: ',num2str(errorB2));
