Bonjour
j'ai besoin de calculer l'entropy mais je n'arrive pas a comprendre pourquoi matlab me fournis un résulta different

exemple:
Code:
soit une source discrète à 8 messages a1, a2, a3, a4, a5, a6, a7, a8 avec les
probabilités d’apparition respectives {0.16; 0.15; 0.01; 0.05; 0.26; 0.11; 0.14; 0.12}
si je calcule l'entropie avec
Code:
somme(-pi*log2(pi))
j’obtiens 2.7358

en revanche si j'utilise matlab
Code:
E=entropy([0.16 0.15 0.01 0.05 0.26 0.11 0.14 0.12])
j’obtiens 3
j'ai essayé de comprendre ce que fait la fonction matlab mais je n'arrive pas a comprendre

code matlab étape par étape
Code:
function E = entropy(varargin)
I = ParseInputs(varargin{:})

if ~islogical(I)
  I = im2uint8(I)
end
p = imhist(I(:))
p(p==0) = []
p = p ./ numel(I)

E = -sum(p.*log2(p))
Code:
function I = ParseInputs(varargin)

narginchk(1,1);

validateattributes(varargin{1},{'uint8','uint16', 'double', 'logical'},...
              {'real', 'nonempty', 'nonsparse'},mfilename, 'I',1);

I = varargin{1};
en gros je n'arrive pas a comprendre ce qu'il fait avec "I" et surtout pourquoi