使用一些数学技巧和 MATLAB,我们可以轻松计算给定输入的熵。例如
x = [10 25 4 10 9 4 4];
[a,b]=hist(x,unique(x));
x =
10 25 4 10 9 4 4
a =
3 1 2 1
b =
4 9 10 25
我的问题如下:因为我们使用的是对数函数,是否建议在对数函数中添加一个小常数以确保正确计算?例如,我们应该使用+eps
? 举个例子:
probbailities=a./numel(x);
probbailities =
0.4286 0.1429 0.2857 0.1429
-sum(probbailities .*log2(probbailities));
ans =
1.8424
-sum(probbailities .*log2(probbailities+eps));
ans =
1.8424