public static double I(double P[][],int j,int k){
  double I=0.0;
  double p_x=P[j][j];
  double p_y=P[k][k];
  double p_xy=P[j][k];
  I+=p_xy * Math.log(p_xy / (p_x * p_y));
  I+=(1. - p_xy) * Math.log((1. - p_xy) / ((1. - p_x) * (1. - p_y)));
  return I;
}

public static double I ( double P [ ] [ ] , int j , int k ) { double I = 0.0 ; double p_x = P [ j ] [ j ] ; double p_y = P [ k ] [ k ] ; double p_xy = P [ j ] [ k ] ; I += p_xy * Math . log ( p_xy / ( p_x * p_y ) ) ; I += ( 1. - p_xy ) * Math . log ( ( 1. - p_xy ) / ( ( 1. - p_x ) * ( 1. - p_y ) ) ) ; return I ; }
i - mutual information . < br > note binary only
