function poblacion = LinealDiscrim(x,X1,X2)

%LinealDiscrim(x,X1,X2)
% Clasifica el dato x en la poblacion 1 o en la 2 
% utilizando la regla lineal de Fisher.
% X1 y X2 son muestras de las poblaciones 1 y 2 respectivamente.

x = x(:) ; px = length(x) ;
[n1,p1] = size(X1) ; [n2,p2] = size(X2) ;
if p1 ~= p2
    error('Las matrices de datos no tienen dimensiones coherentes')
else
    p = p1 ;
    clear p1 p2
end    
if px ~= p
    error('El vector x no tiene dimension adecuada')
else 
    clear px
end 

m1 = mean(X1) ; % Media muestral de poblacion 1
m2 = mean(X2) ; % Media muestral de poblacion 2
tildeS1 = cov(X1) ; % Matriz de covarianzas (insesgado) de X1
tildeS2 = cov(X2) ; % Matriz de covarianzas (insesgado) de X2
S_p = ((n1-1) * tildeS1 + (n2-1) * tildeS2)/(n1+n2-2);
a = S_p\((m1-m2)');
m = (m1+m2) * a/2;

if  (a'*x > m) 
    poblacion = 1;
else 
    poblacion = 2;
end


