信息论实验报告李红莲实验一

  • 格式:doc
  • 大小:18.00 KB
  • 文档页数:3

下载文档原格式

  / 3
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

信息论基础

实验报告

专业:电子信息工程

姓名:

班级/学号:电信1002/

指导老师:李红莲

实验一:信息熵、信道容量的计算

一、实验目的

掌握使用计算机计算信息熵、信道容量的方法。

二、实验原理

1.参照教材(焦瑞莉等编著《信息论基础教程》)第14页式(2-16)理解信息熵的定义

2.参照教材(焦瑞莉等编著《信息论基础教程》)第68页式(3-15)理解信道容量的定义

三、实验方法与实验步骤

(一)参照教材第215页信源熵程序建立文件entropy.m

(二)建立文件exercise2_3_1.m通过调用entropy.m计算教材第69页练习2.3(1)(参考答案:0.81比特)

(三)参照教材第215页离散无记忆信道容量的迭代计算程序建立文件channelcap.m

(四)建立文件exercise3_2_b.m通过调用channelcap.m计算教材第92页练习3.2(b)(参考答案:0.0817比特)

四.源程序代码

1)function H=entropy(P,r)

if(~isempty(find(P<=0)))

error('Not a prob.Vector,negative component');

end

if(abs(sum(P)-1)>10e-10)

error('Not aprob vetor,component do not add up to 1');

end

H=(sum(-P.*log2(P)))/(log2(r)+eps);

clc;

H=entropy([1/4,3/4],2

2)function [CC,Paa]=channelcap(P,k)

% 提示错误信息

if (~isempty(find(P<0, 1)))

error('Not a prob.vector,negative component'); % 判断是否符合概率分布条件

end

if abs(sum((P'))-1)>10e-10

error('Not a prob.vector,components do not add up to 1') % 判断是否符合概率和为1

end

% 1)初始化Pa

[r,s]=size(P);

Pa=(1/(r+eps))*ones(1,r);

Pba=P;

% 2)进行迭代计算

n=0;

C=0;

CC=1;

while abs(CC-C)>=k % 迭代开始

n=n+1;

% (1)先求Pb

Pb=zeros(1,s);

for j=1:s

for i=1:r

Pb(j)=Pb(j)+Pa(i)*Pba(i,j);

end

end

% (2)再求Pab

suma=zeros(1,s);

Pab=zeros(s,r);

for j=1:s

for i=1:r

Pab(j,i)=Pa(i)*Pba(i,j)/(Pb(j)+eps);

suma(j)=suma(j)+Pa(i)*Pba(i,j)*log2((Pab(j,i)+eps)/(Pa(i)+eps));

end

end

% 3)求信道容量C

C=sum(suma);

% 4)求下一次Pa,即Paa

L=zeros(1,r);

a=zeros(1,r);

for i=1:r

for j=1:s

L(i)=L(i)+Pba(i,j)*log(Pab(j,i)+eps);

end

a(i)=exp( L(i));

end

Paa=a./(sum(a)+eps);

% 5)求下一次C,即CC

CC=log2(sum(a)+eps);

Pa=Paa;

end % 迭代结束

% 打印输出结果

s0='很好!输入正确,迭代结果如下:';

s1='最佳输入概率分布Pa:';

s2='信道容量C:';

s3='迭代次数n:';

s4='输入符号数r:';

s5='输出符号数s:';

s6='迭代计算精度k:';

i=1:r;

B=i;

disp(s0);

disp(s1),disp(B),disp(Paa);

disp(s4),disp(r);

disp(s5),disp(s);

disp(s2),disp(CC);

disp(s6),disp(k);

disp(s3),disp(n);

clc,clear

close all

P=[1/3,1/6,1/3,1/6;1/6,1/3,1/6,1/3]

k=10e-9

[CC,Paa]=ChannelCap(P,k)

五、实验结果

1)

2)

六.思考题

使用计算机编程进行信道容量的迭代计算是否肯定收敛,即是否一定能得出近似正确结果?

七.实验体会

对信道容量的迭代计算有了进一步了解,以及信息熵的计算。收获颇丰