% APRENDIZAJE AUTOMÁTICO: UN ENFOQUE PRÁCTICO
% Autores: Gonzalo Pajares, María Guijarro, P. Javier Herrera y Jesús M. de la Cruz
% Copyright RA-MA, 2010
% Capítulo 2: APRENDIZAJE ESTADÍSTICO

function [Divergencia, Coseno_alpha, J_Matusita] = validezBayesian(DATOS_CLASES, c)

%validación de la partición Bayesiana
Divergencia = zeros(c,c); Coseno_alpha = zeros(c,c); J_Matusita = zeros(c,c);

for i=1:1:c
    mi = DATOS_CLASES(i).mediaBayes;
    Ci = DATOS_CLASES(i).covarianzaBayes;
    for j=1:1:c
      if i ~= j
         mj = DATOS_CLASES(j).mediaBayes;
         Cj = DATOS_CLASES(j).covarianzaBayes;

         Div_ij = 0.5*trace((Ci-Cj)*(inv(Cj)-inv(Ci)))+...
                  0.5*trace((mi - mj)*(inv(Ci)-inv(Cj))*(mi - mj)');
         Divergencia (i,j) = Div_ij;
         
         cos_alphaij = (mi*mj')/(norm(mi)*norm(mj));
         Coseno_alpha (i,j) = cos_alphaij;
         
         Bij = 0.125*(mi - mj)*inv(0.5*(Ci+Cj))*(mi - mj)' + ...
               0.5*log10((2*det(Ci + Cj))/(sqrt(det(Ci))*sqrt(det(Cj))));
         
         J_Matusita (i,j) = 2*(1 - exp(-Bij));
      end
    end
end