1.编写一个熵函数,并对输入参数进行检验,使之满足概率空间并处理函数计算log0时的Nan问题。
编写的函数代码如下:
function H= entropy(p)
%entropy 信息熵函数
%输入信源的概率空间,输出信息熵
if p>=0
if sum(p)==1
p(find(p==0))=1; %解决log0的Nan问题
H=sum(sum(-p.*log2(p)));
else
fprintf('不满足概率表空间!\n');
end
else
fprintf('不满足概率空间!\n');
end
end
测试代码如下:
p=[1/2 1/8 1/8 1/8 1/8 0];
H=entropy(p)
fprintf('信源熵为%g\n',H);
运行后结果如图所示:
2.编写二元信源熵H(w)随w变化的曲线图
代码如下:
syms w Hw
XP=[0 1
w 1-w];
Hw=sum(-XP(2,:).*log2(XP(2,:)));
ezplot(w,Hw,[0,1]);xlabel('w'),ylabel('Hw');
title('H(w)随w变化曲线图');
曲线图如下图所示: