熵函数的用法

时间:2012-01-26 04:32:18

标签: matlab statistics entropy

我试图在MATLAB中找到某个概率分布的熵。对于p,我尝试了

E = -sum(p .* log2(p))

Echeck = entropy(p)

E和Echeck不应该相同吗?

关于熵的matlab帮助确实说熵被定义为-sum(p。* log2(p)) 其中p包含从imhist返回的直方图计数。但是,熵也将除逻辑之外的任何类转换为uint8用于直方图计数计算,因为它实际上试图计算灰度图像的熵并因此希望像素值是离散的。 所以我认为将此功能用于我的目的是不正确的? 有没有好的选择?

1 个答案:

答案 0 :(得分:3)

我使用open entropy检查代码,并且有一行:

if ~islogical(I)
  I = im2uint8(I);
end
p = imhist(I(:));

表示输入转换为uint8,然后该函数计算输入直方图的熵,而不是输入本身的熵。

这解释了差异。