我试图在MATLAB中找到某个概率分布的熵。对于p,我尝试了
E = -sum(p .* log2(p))
和Echeck = entropy(p)
E和Echeck不应该相同吗?
关于熵的matlab帮助确实说熵被定义为-sum(p。* log2(p)) 其中p包含从imhist返回的直方图计数。但是,熵也将除逻辑之外的任何类转换为uint8用于直方图计数计算,因为它实际上试图计算灰度图像的熵并因此希望像素值是离散的。 所以我认为将此功能用于我的目的是不正确的? 有没有好的选择?
答案 0 :(得分:3)
我使用open entropy
检查代码,并且有一行:
if ~islogical(I)
I = im2uint8(I);
end
p = imhist(I(:));
表示输入转换为uint8,然后该函数计算输入直方图的熵,而不是输入本身的熵。
这解释了差异。