📜  使用MATLAB的信息熵

📅  最后修改于: 2021-04-16 08:49:18             🧑  作者: Mango

信息熵是信息的随机源产生信息的总速率。与每个潜在信息值相关的信息熵的比例是价值的似然质量函数的负对数。因此,当信息源具有较低的可能性自尊时(即,当发生可能性低的情况时),与当源信息具有较高的可能性自尊时相比,该场合传送的数据更多。沿着这些线表征的每种情况下传递的数据量度都变成一个随机变量,其预期价值是信息熵。当确定要发生一个结果时,熵为零。

公式:

示例1:离散的无内存源,即DMS’X’具有4个符号x1,x2,x3和x4,概率为P(x1)= 0.333,P(x2)= 0.333,P(x3)= 0.167和P(x4)= 0.167。
因此,H(X)= -0.333 log2(0.333)-0.333 log2(0.333)-0.167 log2(0.167)-0.167 log2(0.167)
高(X)= 1.918

示例2:离散的无内存源,即DMS’X’具有2个符号x1和x2,概率为P(x1)= 0.600和P(x2)= 0.400
因此,H(X)= -0.600 log2(0.600)-0.400 log2(0.400)
高(X)= 0.970

这是计算字符串信息熵的MATLAB代码。

clc;
  
# the string
x = 'GeeksforGeeks'
  
# length of the string
len = length(x);
display(len);
  
# unique characters
u = unique(x);
display(u);
  
# length of unique character string
lenChar = length(u);
display(lenChar);
  
# creating 2 zero vectors
z = zeros(1, lenChar);
p = zeros(1, lenChar);
  
# finding the values of probability
for i = 1 : lenChar
   z(i) = length(findstr(x, u(i)));
   p(i) = z(i) / len;
end
display(z);
display(p);
  
# information entropy
H = 0;
for i=1:lenChar
  H = H + (-p(i) * log2(p(i)));
end
display(H);
x = GeeksforGeeks
len =  13
u = Gefkors
lenChar =  7
z =

   2   4   1   2   1   1   2

p =

   0.153846   0.307692   0.076923   0.153846   0.076923   0.076923   0.153846

H =  2.6235