使用正态数据直方图与直接公式(matlab)进行熵估计

时间:2013-05-13 17:23:12

标签: matlab distribution histogram entropy

假设我们已经绘制了标准正态分布的n=10000个样本。

现在我想用直方图计算其熵来计算概率。

1)计算概率(例如使用matlab)

[p,x] = hist(samples,binnumbers);
area = (x(2)-x(1))*sum(p);
p = p/area;

(由于某些规则确定了binnumbers)

2)估计熵

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

给出58.6488

现在我使用直接公式来计算正常数据的熵

H = 0.5*log2(2*pi*exp(1)) = 2.0471

使用直方图+熵公式时我做错了什么? 非常感谢您的帮助!!

1 个答案:

答案 0 :(得分:3)

您缺少总和中的dp字词

dp = (x(2)-x(1));
area = sum(p)*dp;
H = -sum( (p*dp) * log2(p) );

这应该会让你足够近......

PS,
当你带log2(p)时要小心,有时你可能会有空箱。您可能会发现nansum很有用。