about summary refs log tree commit diff
path: root/sourcecodes/bnt-master/KPMtools/cross_entropy.m
blob: 1a7d2003e2c7eba74c0ac31d93370e39af572547 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function kl = cross_entropy(p, q, symmetric)
% CROSS_ENTROPY Compute the Kullback-Leibler divergence between two discrete prob. distributions
% kl = cross_entropy(p, q, symmetric)
%
% If symmetric = 1, we compute the symmetric version. Default: symmetric = 0;

tiny = exp(-700);
if nargin < 3, symmetric = 0; end
p = p(:);
q = q(:);
if symmetric
  kl  = (sum(p .* log((p+tiny)./(q+tiny))) + sum(q .* log((q+tiny)./(p+tiny))))/2;
else
  kl  = sum(p .* log((p+tiny)./(q+tiny)));
end