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变化曲线图');
曲线图如下图所示:

本文介绍了如何使用MATLAB编写信息熵计算函数,解决了log0的Nan问题,并展示了二元信源熵随参数变化的曲线图。通过实际案例,演示了熵函数的应用。

1877

被折叠的 条评论
为什么被折叠?



