《信息论》实验指导书应用MATLAB软件实现.docx

上传人:b****8 文档编号:9418800 上传时间:2023-05-19 格式:DOCX 页数:36 大小:146.12KB
下载 相关 举报
《信息论》实验指导书应用MATLAB软件实现.docx_第1页
第1页 / 共36页
《信息论》实验指导书应用MATLAB软件实现.docx_第2页
第2页 / 共36页
《信息论》实验指导书应用MATLAB软件实现.docx_第3页
第3页 / 共36页
《信息论》实验指导书应用MATLAB软件实现.docx_第4页
第4页 / 共36页
《信息论》实验指导书应用MATLAB软件实现.docx_第5页
第5页 / 共36页
《信息论》实验指导书应用MATLAB软件实现.docx_第6页
第6页 / 共36页
《信息论》实验指导书应用MATLAB软件实现.docx_第7页
第7页 / 共36页
《信息论》实验指导书应用MATLAB软件实现.docx_第8页
第8页 / 共36页
《信息论》实验指导书应用MATLAB软件实现.docx_第9页
第9页 / 共36页
《信息论》实验指导书应用MATLAB软件实现.docx_第10页
第10页 / 共36页
《信息论》实验指导书应用MATLAB软件实现.docx_第11页
第11页 / 共36页
《信息论》实验指导书应用MATLAB软件实现.docx_第12页
第12页 / 共36页
《信息论》实验指导书应用MATLAB软件实现.docx_第13页
第13页 / 共36页
《信息论》实验指导书应用MATLAB软件实现.docx_第14页
第14页 / 共36页
《信息论》实验指导书应用MATLAB软件实现.docx_第15页
第15页 / 共36页
《信息论》实验指导书应用MATLAB软件实现.docx_第16页
第16页 / 共36页
《信息论》实验指导书应用MATLAB软件实现.docx_第17页
第17页 / 共36页
《信息论》实验指导书应用MATLAB软件实现.docx_第18页
第18页 / 共36页
《信息论》实验指导书应用MATLAB软件实现.docx_第19页
第19页 / 共36页
《信息论》实验指导书应用MATLAB软件实现.docx_第20页
第20页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

《信息论》实验指导书应用MATLAB软件实现.docx

《《信息论》实验指导书应用MATLAB软件实现.docx》由会员分享,可在线阅读,更多相关《《信息论》实验指导书应用MATLAB软件实现.docx(36页珍藏版)》请在冰点文库上搜索。

《信息论》实验指导书应用MATLAB软件实现.docx

《信息论》实验指导书应用MATLAB软件实现

《信息与编码理论》上机实验指导书

———————应用MATLAB软件实现

 

 

UPC通信工程系

前言

本实验系列是采用MATLAB软件,主要针对《信息论基础》课程中的相关内容进行的实验。

MATLAB是一完整的并可扩展的计算机环境,是一种进行科学和工程计算的交互式程序语言。

它的基本数据单元是不需要制定维数的矩阵,它可直接用于表达数学的算式和技术概念,解决同样的数值计算问题,使用MATLAB要比使用Basic、Fortran和C语言等提高效率许多倍。

MATLAB还是一种有利的教学工具,在大学的线性代数课程以及其它领域的高一级课程的教学中,已称为标准的教学工具。

该指导书共安排了4个实验,现就一些情况作简要说明:

各实验要求学生在MATLAB系统上尽量独立完成,弄懂。

实验内容紧扣课程教学内容的各主要基本概念,希望同学们在完成每个实验后,对所学的内容起到巩固和加深理解的作用。

每个实验做完后必须交一份实验报告。

恳请各位实验老师和同学在实验中提出宝贵意见,以利于以后改进提高。

 

实验一离散信源及其信息测度.......................................3

实验二离散信道及其容量...........................................6

实验三无失真信源编码.............................................8

实验四有噪信道编码..............................................10

附录部分常用MATLAB命令.......................................12

 

实验一离散信源及其信息测度

一、[实验目的]

离散无记忆信源是一种最简单且最重要的信源,可以用完备的离散型概率空间来描述。

本实验通过计算给定的信源的熵,加深对信源及其扩展信源的熵的概念的理解。

二、[实验环境]

  windowsXP,MATLAB

三、[实验原理]

信源输出的各消息的自信息量的数学期望为信源的信息熵,表达式如下

信源熵是信源的统计平均不确定性的描述,是概率函数

的函数。

四、[实验内容]

1、有条100字符英文信息,假定其中每字符从26个英文字母和1个空格中等概选取,那么每条信息提供的信息量为多少若将27个字符分为三类,9个出现概率占2/7,13个出现概率占4/7,5个出现占1/7,而每类中符号出现等概,求该字符信源的信息熵。

2、二进制通信系统使用0、1,由于存在失真,传输会产生误码,用符号表示下列事件:

u0:

一个0发出;u1:

一个1发出;v0:

一个0收到;v1:

一个1收到;给定下列概率:

p(u0)=1/2,p(v0|u0)=3/4,p(v0|u1)=1/2。

求:

(a)已知发出一个0,求收到符号后得到的信息量;(b)已知发出的符号,求收到符号后得到的信息量;

3、给定离散无记忆信源X,其概率空间为

求该信源的熵和其二次、三次扩展信源的熵。

(编写一M函数文件:

function[H_X1,H_X2,H_X3]=t03(X1,P1)

%t03求信源和其二次、三次扩展信源的熵

%输入为X1,P1,分别为信源符号和概率阵

%输出为原离散信源的熵H_X1和二次、三次扩展信源的熵H_X2、H_X3

X1X2

P

000102101112202122

1/41/1801/181/31/1801/187/36

=

4、某离散二维平稳信源的概率空间:

设发出的符号只与前一个符号有关。

求:

(a)认为信源符号之间无依赖性时,信源X的信息熵H(X);(b)认为有依赖性时的条件熵H(X2|X1);(c)联合熵H(X1X2);(d)根据以上三者之间的关系,验证结果的正确性。

5、有两个二元随机变量X和Y,它们的联合概率分布函数如下表:

YX

0

1

0

1/8

3/8

1

3/8

1/8

同时定义另一随机变量Z=X*Y,试求:

a、熵H(X),H(Z),H(X,Z)和H(X,Y,Z);

b、条件熵H(X|Y),H(X|Z),H(Y|X,Z);

c、互信息I(X;Y),I(X;Z),I(X;Y|Z);

五、[实验过程]

每个实验项目包括:

1)设计思路2)实验中出现的问题及解决方法;

1)设计思路

1、每字符从26个英文字母和1个空格中等概选取,一共100个字符,那么可以

组成27^100条消息,每条消息出现的概率是1/(27^100),由自信息量公式可

得每条消息的自信息量。

2、求出各种条件概率,将其代入信息量公式计算信息量。

3、离散无记忆信源X熵,可将其概率代入信息熵的计算公式得到,二次,三次

扩展信源,可先求出其概率空间。

4.由离散二维平稳信源的概率空间,及信息熵,条件熵,联合熵的公式,可得到

我们要的结果。

5、计算各种情况的概率,X的概率,Y的概率,Z=XY联合概率等,然后代入公

式求解。

6、程序代码:

clearall,clc;

%

%有条100字符英文信息,假定其中每字符从26个英文字母和1个空格中等概选取

%求每条信息提供的信息量

H1=log2(27^100)

%

%事件:

u0:

一个0发出;u1:

一个1发出;v0:

一个0收到;v1:

一个1收到;

%给定下列概率:

p(u0)=1/2,p(v0|u0)=3/4,p(v0|u1)=1/2

p_u0=1/2;

p_v0_u0=3/4;

p_v0_u1=1/2;

p_v1_u0=1-p_v0_u0;

%(a)已知发出一个0,求收到符号后得到的信息量;

H_V_u0=p_v0_u0*log2(p_v0_u0)-p_v1_u0*log2(p_v1_u0);

%(b)已知发出的符号,求收到符号后得到的信息量

p_u1=1-p_u0;

p_v1_u1=1-p_v0_u1;

p_u0v0=p_v0_u0*p_u0;

p_u0v1=p_v1_u0*p_u0;

p_u1v0=p_v0_u1*p_u1;

p_u1v1=p_v1_u1*p_u1;

H_V_U=-p_u0v0*log2(p_v0_u0)-p_u0v1*log2(p_v1_u0)-p_u1v0*log2(p_v0_u1)-p_u1v1*l

og2(p_v1_u1)

%

c=[,];

[y1,y2,y3]=t05(c)

%信源的熵和其二次、三次扩展信源的熵

%

P_X1X2=[1/41/180;1/181/31/18;01/187/36];%联合分布

%(a)认为信源符号之间无依赖性时,信源X的信息熵H(X);

P_X=sum(P_X1X2);

H_X=sum(-P_X.*log2(P_X));

fprintf('X的信源熵:

H_X=%6.3f\n',H_X);

%(b)认为有依赖性时的条件熵H(X2|X1);

P_X1_X2=[P_X1X2(:

1)/P_X

(1),P_X1X2(:

2)/P_X

(2),P_X1X2(:

3)/P_X(3)];%条件矩阵

P_X1_X2(find(P_X1_X2==0))=1;%将0换为1

H_X1_X2=sum(-P_X1X2.*log2(P_X1_X2));

fprintf('X的条件熵:

\nH_X1_X2=%6.3f\n',H_X1_X2);

%(c)联合熵H(X1X2)

P_X1X2(find(P_X1X2==0))=1;%将0换为1

H_X1X2=sum(-P_X1X2.*log2(P_X1X2));

fprintf('X的联合熵:

\nH_X1X2=%6.3f\n',H_X1X2);

%

%有两个二元随机变量X和Y,同时定义另一随机变量Z=X*Y,试求:

%a、熵H(X),H(Z),H(X,Z)和H(X,Y,Z);

%b、条件熵H(X|Y),H(Y|X,Z);

%c、互信息I(X;Y),I(X;Y|Z);

功能函数t03:

function[H_X1,H_X2,H_X3]=t03(X1,P1)

%t03

%输入为X1,P1,分别为信源符号和概率阵

%输出为原离散信源的熵和扩展信源的熵

X2=X_grow

(2);

p0=;

p1=1-p0;

H_X1=sum(-P1.*log2(P1));

l=length(X1);

P=zeros(1:

l^2);

fori=1:

l^2

l1=length(find(X2(i,:

)));

P2(i)=p0^(l-l1)*p1^l1;

end

H_X2=sum(-P2.*log2(P2));

%------------------------------------

---------------

functions=X_grow(n)

s=zeros(2^n,n);

fori=2:

2^n

j=n;

%forj=6:

-1:

1

s(i,:

)=s(i-1,:

);

s(i,j)=s(i-1,j)+1;

forj=n:

-1:

1

if(s(i,j)==2)

s(i,j)=0;

s(i,j-1)=s(i,j-1)+1;

end

end

End

功能函数t05:

function[H_X1,H_X2,H_X3]=t05(P1)

H_X1=sum(-P1.*log2(P1));

x=zeros(1,length(P1)^2);

y=zeros(1,length(P1)^3);

a=1;

b=1;

fori=1:

length(P1)

forj=1:

length(P1)

x(a)=P1(i)*P1(j);

a=a+1;

end

end

H_X2=sum(-x.*log2(x));

fori=1:

length(P1)

forj=1:

length(P1)

fork=1:

length(P1)

y(b)=P1(i)*P1(j)*P1(k);

b=b+1;

end

end

end

H_X2=sum(-x.*log2(x));

H_X3=sum(-y.*log2(y));

部分结果:

H1=

H_V_U=

y1=

y2=

y3=

X的信源熵:

H_X=

X的条件熵:

H_X1_X2=

X的条件熵:

H_X1_X2=

X的条件熵:

H_X1_X2=

X的联合熵:

H_X1X2=

X的联合熵:

H_X1X2=

X的联合熵:

H_X1X2=

2)实验中出现的问题及解决方法;

实验中遇到的问题有很多,如各种概率空间的计算,弄混,概念不清楚,

公式不熟悉,对信息论的定理概念及意义不理解,不能灵活运用。

对于各种概率的计算,需要准确分析,然后逐一进行计算。

信息论的定理概念及意义,翻书查阅,尽可能的熟悉,理解,并加以运用。

六、[实验总结]

通过实验,回顾了各种概率的求解方法,该实验主要是计算消息的信息量,

信息熵。

在实验过程中,不断地学习查阅课本,巩固了上课的知识,对所学的定

理和公式有了更加深刻的认识和理解。

 

实验二离散信道及其容量

一、[实验目的]

1、理解离散信道容量的内涵;

2、掌握求二元对称信道(BSC)互信息量和容量的设计方法;

3、掌握二元扩展信道的设计方法并会求其平均互信息量。

二、[实验环境]

  windowsXP,MATLAB7

三、[实验原理]

  若某信道输入的是N维序列x,其概率分布为q(x),输出是N维序列y,则平均互信息量记为I(X;Y),该信道的信道容量C定义为

四、[实验内容]

1、给定BSC信道,信源概率空间为

信道矩阵

求该信道的I(X;Y)和容量,画出I(X;Y)和

、C和p的关系曲线。

2、编写一M脚本文件,实现如下功能:

在任意输入一信道矩阵P后,能够判断是否离散对称信道,若是,求出信道容量C。

3、已知X=(0,1,2);Y=(0,1,2,3),信源概率空间和信道矩阵分别为

0

0

P=

 

求:

平均互信息量;

4、对题

(1)求其二次扩展信道的平均互信息I(X;Y)。

五、[实验过程]

每个实验项目包括:

1)设计思路2)实验中出现的问题及解决方法;

 

1)设计思路

1、信道容量

max(X;Y)

C=I

,因此要求给定信道的信道容量,只要知道该信道

的最大互信息量,即求信道容量就是求信道互信息量的过程。

程序代码:

clearall,clc;

w=;

w1=1-w;

p=;

X

P

01

=

p1=1-p;

savedata1pp1;

I_XY=(w*p1+w1*p)*log2(1/(w*p1+w1*p))+(w*p+w1*p1)*log2(1/(w*p+w1*p1))-...

(p*log2(1/p)+p1*log2(1/p1));

C=1-(p*log2(1/p)+p1*log2(1/p1));

fprintf('互信息量:

%6.3f\n信道容量:

%6.3f',I_XY,C);

p=eps:

:

1-eps;

p1=1-p;

C=1-(p.*log2(1./p)+p1.*log2(1./p1));

subplot(1,2,1),plot(p,C),xlabel('p'),ylabel('C');

loaddata1;

w=eps:

:

1-eps;

w1=1-w;

I_XY=(w.*p1+w1.*p).*log2(1./(w.*p1+w1.*p))+(w.*p+w1.*p1).*log2(1./(w.*p+w1.*p1))-..

.(p.*log2(1./p)+p1.*log2(1./p1));

subplot(1,2,2),plot(w,I_XY)

xlabel('w'),ylabel('I_XY');

实验结果:

互信息量:

信道容量:

I(X;Y)和ω、C和p的关系曲线图:

01

0

 

1

p

C

01

0

 

1

w

IY

2、离散对称信道:

当离散准对称信道划分的子集只有一个时,信道关于输入和

输出对称。

离散准对称信道:

若一个离散无记忆信道的信道矩阵中,按照信道的输出集Y

可以将信道划分成n个子集,每个子矩阵中的每一行都是其他行同一组元素的不

同排列。

实验代码:

clc;clear;

P=input('输入信道转移概率矩阵:

');

[r,c]=size(P);

ifsum(P,2)-1~=zeros(1,r)';

error('输入的信道矩阵不合法!

');%矩阵行和一定要为1

end

l=1;

Sum=0;

forj=2:

c

fori=1:

r%i是行变量

fork=1:

r

ifP(k,j)==P(i,1)

Sum=Sum+1;

break;

end

end

end

end

ifSum==r*(c-1)

fprintf('是离散输出对称信道!

\n',j);

elsefprintf('不是对称信道!

');

end

实验结果:

输入信道转移概率矩阵:

[;]

是离散输出对称信道!

输入信道转移概率矩阵:

[;]

不是对称信道!

3、二次扩展信道的互信息量I(X;Y)=H(Y)-H(Y|X).

实验代码:

clc,clear;

p=;

P_X1=[,];

p1=1-p;

X2=[0,0;0,1;1,0;1,1];%二次扩展输入符号阵

Y2=X2;%二次扩展输出符号

P_X2=[P_X1

(1)^2,P_X1

(1)*P_X1

(2),P_X1

(2)*P_X1

(1),P_X1

(2)^2];

%求二次扩展后信道矩阵N

N=zeros(4);

fori=1:

4

forj=1:

4

l=length(find(xor(X2(i,:

),Y2(j,:

))==0));%比较得正确传递元素个数

N(i,j)=p1^l*p^(2-l);

end

end

%下面求I

P_Y2=P_X2*N;

P_XY2=[P_X2

(1)*N(1,:

);P_X2

(2)*N(2,:

);P_X2(3)*N(3,:

);P_X2(4)*N(4,:

)];%联合分布

H_Y2=sum(-P_Y2.*log2(P_Y2));

H_Y_X2=sum(sum(-P_XY2.*log2(N)));

I_XY2=H_Y2-H_Y_X2;

fprintf('2次扩展信道的平均互信息为:

%5.3f',I_XY2);

实验结果:

2次扩展信道的平均互信息为:

2)实验中出现的问题及解决方法;

1、信道容量与互信息量有关,而互信息量又与信源熵相关,所以要求得信道容

量就必须知道信道传递概率,然后根据公式一步一步计算。

2、对于判断离散对称信道,不需要弄清楚的是它的概念,根据定义来判断。

3、对于扩展信道,分有记忆的和无记忆的,在不确定的情况下计算扩展信源的

熵,我们要根据定义来计算。

六、[实验总结]

通过本次实验,我对于信道的分类,各种信道的特点有了一定的认识和了解。

实验中涉及的主要是二元对称信道,而它的最佳分布是输入和输出均对称。

实验中最主要的部分还是关于信道容量的计算,此次实验,让我们验证了课

本上的定理,也让我们更好地理解和掌握了课堂上所学的知识。

__

 

实验三无失真信源编码

一、[实验目的]

1、理解香农第一定理指出平均码长与信源之间的关系;

2、加深理解香农编码具有的重要的理论意义。

3、掌握霍夫曼编码的原理;

4、掌握霍夫曼编码的方法和步骤;

二、[实验环境]

  windowsXP,MATLAB7

三、[实验原理]

  香农第一定理:

设离散无记忆信源为

熵为H(S),其N次扩展信源为

熵为H(SN)。

码符号集X=(x1,x2,…,xr)。

先对信源

进行编码,总可以找到一种编码方法,构成惟一可以码,使S中每个信源符号所需的平均码长满足:

当N

是平均码长

对应的码字长度

四、[实验内容]

1、根据实验原理,设计shannon编码方法,在给定

条件下,实现香农编码并算出编码效率。

2、在给定离散无记忆信源

S

P

s1s2s3s4

1/85/167/161/8

=

 

条件下,实现二进制霍夫曼编码,求最后得到的码字并算出编码效率。

五、[实验过程]

每个实验项目包括:

1)设计思路2)实验中出现的问题及解决方法;

某一离散信源概率分布:

p=[1/2,1/4,1/8,1/16,1/16]求信源的熵,并对该信源进行二元哈夫曼编码,得到码字和平均码长以及编码效率。

Matlab程序:

function[h,l]=huffman(p)

p=[1/21/41/81/161/16];

iflength(find(p<0))~=0,

error('Nota,thereisnegativecomponent')

end

ifabs(sum(p)-1)>10e-10

error('Inputisnota,thesunofthecomponentsisnotequalto1')

end

n=length(p);

q=p;

m=zeros(n-1,n);

fori=1:

n-1

[q,l]=sort(q);

m(i,:

)=[l(1:

n-i+1),zeros(1,i-1)];

q=[q

(1)+q

(2),q(3:

n),1];

end

fori=1:

n-1

c(i,:

)=blanks(n*n);

end

c(n-1,n)='0';

c(n-1,2*n)='1';

fori=2:

n-1

c(n-i,1:

n-1)=c(n-i+1,n*(find(m(n-i+1,:

)==1))...

-(n-2):

n*(find(m(n-i+1,:

)==1)));

c(n-i,n)='0';

c(n-i,n+1:

2*n-1)=c(n-i,1:

n-1);

c(n-i,2*n)='1';

forj=1:

i-1

c(n-i,(j+1)*n+1:

(j+2)*n)=c(n-i+1,...

n*(find(m(n-i+1,:

)==j+1)-1)+1:

n*find(m(n-i+1,:

)==j+1));

end;

end

fori=1:

n

h(i,1:

n)=c(1,n*(find(m(1,:

)==i)-1)+1:

find(m(1,:

)==i)*n);

l1(i)=length(find(abs(h(i,:

))~=32));

end

l=sum(p.*l1)

运行结果为:

l=

ans=

1

01

001

0000

0001

 

六、[实验总结]

 

   实验四有噪信道编码

一、[实验目的]

1、理解极大似然译码规则;

2、掌握简单重复编码方法;

3、掌握(5.2)线性码及其编码方法;

二、[实验环境]

  windowsXP,MATLAB7

三、[实验原理]

在确定译码规则F(yj)=xi,i=1,2,3,…,s之后,若信道输出端接收到的符号为yj,则一定译成xi。

如果发送端发送的就是xi,这就是正确译码;反之,若发送端发送的是xk,就认为是错误译码。

经过译码的平均错误概率为

若选择译码函数F(yj)=x*,使之满足条件

则称为极大似然译码规则。

四、[实验内容]

P=

1、有一BSC信道矩阵:

采用简单重复编码,设计函数在编码次数分别为n=3、5、7、9,输入消息符号个数M=2条件下,求译码平均错误概率PE和信息传输速率R的值。

2、对上题的信道矩阵,若采用(5.2)线性码,M=4,n=5,求此时的信息传输速率R和误码率PE。

五、[实验过程]

)设有一离散信道,其信道传递矩阵为:

,并设

试分别按最小错误概率准则与最大似然译码准则确定译码规则,并计算相应的平均错误概率。

1、按最小错误概率准则,

P(ab)=[1/41/61/12,1/241/81/12,1/121/241/8]

Matlab程序:

p=(1/4+1/24)+(1/6+1/8)+(1/12+1/12)

运行结果:

p=

,即相应平均错误概率为:

按最大似然译码准则译码规则:

Matlab程序:

p2=1/2*(1/3+1/6)+1/4*(1/6+1/3)+1/4*(1/3+1/6)

程序运行结果:

p2=

 

即相应平均错误概率为:

 

附录:

部分常用MATLAB命令

管理命令和函数

help

在线帮助文件

doc

装入超文本说明

what

M、MAT、MEX文件的目录列表

type

列出M文件

lookfor

通过help条目搜索关键字

which

定位函数和文件

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2