绘制固定二元对称信道(BSC)平均互信息曲线图

将多条曲线绘制在同一坐标轴上,目前本人知道两种方法

 

一、利用“hold on”将图形保持,多次绘制,代码如下:

p=[(0+eps) 0.25 0.5 0.75 1];
w=(0+eps):0.001:1;
Line=['r','b','k','y','g'];
for i=1:length(p)
    H1=-(w.*(1-p(i))+(1-w).*p(i)).*log((w.*(1-p(i))+(1-w).*p(i)))-(1-(w.*(1-p(i))+(1-w).*p(i))).*log(1-(w.*(1-p(i))+(1-w).*p(i)));
    H2=-p(i)*log(p(i))-(1-p(i))*log(1-p(i));
    I=H1-H2;
    hold on
    plot(w,I,Line(i));
    title('平均互信息(p固定)');xlabel('w'),ylabel('I(xy)');
end
legend('p=0','p=0.25','p=0.5','p=0.75','p=1');

曲线图如下:

 

二、将变量存入一个矩阵当中,一次性绘制出来

代码如下:

function [ ] = mutualinformationgraph( p,w )
%mutualinformationgraph2 绘制固定二元对称信道平均互信息曲线图
%   p-信道错误转移概率,w-信源概率
for i=1:length(w)
    H1(i,:)=-(p.*(1-w(i))+(1-p).*w(i)).*log((p.*(1-w(i))+(1-p).*w(i)))-(1-(p.*(1-w(i))+(1-p).*w(i))).*log(1-(p.*(1-w(i))+(1-p).*w(i)));
    H2(i,:)=-w(i)*log(w(i))-(1-w(i))*log(1-w(i));
    I(i,:)=H1(i,:)-H2(i,:);
end
plot(p,I);title('平均互信息(w固定)');xlabel('w');ylabel('I(xy)');
legend('w=0','w=0.1','w=0.2','w=0.3','w=0.4','w=0.45');
end

测试程序代码如下:

w=[(0+eps) 0.1 0.2 0.3 0.4,0.45];%(0+eps)用于避免发生log0
p=(0+eps):0.001:1;
mutualinformationgraph(p,w)

测试程序生成图如下:

由上述两种代码可知,第一种代码,如果绘制曲线较多,需要多次更改函数“Line”,而第二种方法则没有此缺点,省去了这些麻烦,本人封装函数仅是本人的习惯问题,实际上第二钟方法没必要封装函数,这样有点画蛇添足了。

  • 2
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值