Daniel@0: function H = entropy(v, scale) Daniel@0: % ENTROPY Entropy log base 2 Daniel@0: % H = entropy(v) Daniel@0: % If v is a matrix, we compute the entropy of each column Daniel@0: % Daniel@0: % % H = entropy(v,1) means we scale the result so that it lies in [0,1] Daniel@0: Daniel@0: if nargin < 2, scale = 0; end Daniel@0: Daniel@0: v = v + (v==0); Daniel@0: H = -1 * sum(v .* log2(v), 1); % sum the rows Daniel@0: Daniel@0: if scale Daniel@0: n = size(v, 1); Daniel@0: unif = normalise(ones(n,1)); Daniel@0: H = H / entropy(unif); Daniel@0: end