信息论实验指导书.docx

上传人:b****7 文档编号:9198615 上传时间:2023-02-03 格式:DOCX 页数:22 大小:59.95KB
下载 相关 举报
信息论实验指导书.docx_第1页
第1页 / 共22页
信息论实验指导书.docx_第2页
第2页 / 共22页
信息论实验指导书.docx_第3页
第3页 / 共22页
信息论实验指导书.docx_第4页
第4页 / 共22页
信息论实验指导书.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

信息论实验指导书.docx

《信息论实验指导书.docx》由会员分享,可在线阅读,更多相关《信息论实验指导书.docx(22页珍藏版)》请在冰豆网上搜索。

信息论实验指导书.docx

信息论实验指导书

信息论与编码实验指导书

任课教师:

刘亚荣

桂林理工大学电计系

Matlab基础:

1、变量不需指定类型,拿来就用;变量区分大小写

2、向量定义:

x=[1/2,1/4,1/4](行向量);y=(0:

360)*pi/180;向量的转置x'(列向量)

3、.*./A运算,逐个元素进行运算。

例x仁[1/2,1/4,1/4],x2=[2,4,

4],则x1*x2没定义;x1*x2'有定义(=3);x1.*x2有定义(逐元素相乘=[1,1,1])

4、变量值显示:

如果一行的后面没有分号,则显示出该行的变量结果。

如a=3显

示出a=3。

5、画图命令plot(x,y);x(向量)是一系列坐标,y(向量)是一系列值。

6、求和:

sum(),求积分:

求微分:

符号微分

diff(f)——求f对自由变量的一阶微分diff(f,v)——求f对符号变量v的一阶微分diff(f,v,n)——求f对符号变量v求n阶微分符号积分

int(f,v)——求表达式f的对符号变量v的不定积分

int(f,v,a,b)求表达式f的对符号变量v的在(a,b)范围内定积分

7M函数文件的基本结构

函数文件由function语句引导,其基本结构为:

function输出形参表=函数名(输入形参表)注释说明部分

函数体语句说明:

(1)关于函数文件名:

函数文件名与函数名也可以不相同。

当两者不同时,

MATLA将忽略函数名而确认函数文件名,因此调用时使用函数文件名。

(2)关于注释说明部分。

注释说明包括三部分内容:

①紧随函数文件引导行之后以%开头的第一

注释行。

②第一注释行及之后连续的注释行。

③与在线帮助文本相隔一空行的注释行。

(3)关于return语句。

执行到该语句就结束函数的执行,程序流程转至调用该函数的位置。

通常,在函数文件中也可不使用return语句,这时在被调函数执行完成后自动返回。

8显示图形

1、%plot函数绘制结果t=0:

pi/100:

2*pi;%定义数据点

y=sin(t);

plot(t,y)%显示图形

gridon%显示网格xlabel('t');%显示x轴的变量ylabel('sin(t)');%显示y轴的变量

2、%plot函数中x-y副的使用t=0:

pi/100:

2*pi;

y=sin(t);

plot(t,y)

gridon

y2=sin(t-0.25);

y3=sin(t-0.5);plot(t,y,t,y2,t,y3)

实验一:

计算离散信源的熵

一、实验设备:

1、计算机

2、软件:

Matlab

二、实验目的:

1、熟悉离散信源的特点;

2、学习仿真离散信源的方法

3、学习离散信源平均信息量的计算方法

4、熟悉Matlab编程;

三、实验内容:

1、写出计算自信息量的Matlab程序

2、写出计算离散信源平均信息量的Matlab程序。

3、掌握二元离散信源的最大信息量与概率的关系。

4、将程序在计算机上仿真实现,验证程序的正确性并完成习题。

四、实验报告要求

写出习题的

简要总结离散信源的特点及离散信源平均信息量的计算MATLA实现语句。

信息论基础:

自信息的计算公式

1

1(a)log2Matlab实现:

I=log2(0p)或I=-Iog2(p)

Pa

熵(平均自信息)的计算公式

q1q

H(x)pilog2—Pilog2Pi

i1pii1

;或者h=h-x(i)*log2(x(i));

Matlab实现:

HX=sum(-x.*log2(x))

习题:

1.甲地天气预报构成的信源空间为:

乙地信源空间为:

晴小雨

求此两个信源的熵。

求各种天气的自信息量

案:

H(X)1.75;H(Y)0.5436

2、某信息源的符号集由A、B、C、DE组成,设每一符号独立出现,其出现的概率分别为,1/4,1/8,1/8,3/16,5/16,试求该信源符号的平均信息量。

3、设有四个消息分别以概率1/4,独立的。

试计算其平均信息量。

(答案:

H(X)=2.2272bit符号)1/8,1/8,1/2传送,每一消息的出现是相互

(答案:

H(X)=1.75bit/符号)

4.设一个二元信源(只有0和1两种符号)其概率空间为:

X01

P(x)P,1P

编程画出H与p的关系,并说明当P呈什么分布时,平均信息量达到最大值。

(说明:

H=-p*log2(p)-(1-p).log2(1-p);)

实验二:

验证熵的可加性与强可加性

1.【例2.6】

有一离散无记忆信源

X

a1a?

a3

P(x)

111

2'4'4

验证二次扩展信源X2的熵等于离散信源X的熵的2倍,即

H(X2)2H(X)

答案:

H(X)1.5;H(X2)3.0

2.验证两个统计独立的信源X,Y,验证:

H(XY)H(X)H(Y)

H(X)1.5,

其中:

X

a1

a2a3

Y

b1

bA

P(x)

1

11

P(y)

1

11

J

2

4,4

3

3'3

H(Y)1.585H(XY)3.085

3、条件熵的计算与熵的强可加性

验证离散二维平稳信源,满足:

H(X,X2)H(XJH(X2|XJ

某一离散二维平稳信源

X

P(x)

012

1141

36'9'4

 

X/2其联合概率分布P(X!

X2)为:

X

0

1

2

0

1

1

18

0

1

1

1

1

18

|3

18

2

0]

1

18

7

36

编程计算:

1)联合熵日以梯2)

2)条件熵H(X2|Xi)

3)验证:

日以梯2)H(X1)H(X2|X1)

答案:

H(X1)1.5426;H(X2|X1)0.8717

H(X1X2)2.4144H(X1)H(X2|X1)2.4144

%联合熵的计算

HXY=0;

fori=1:

size(b,1)

forj=1:

size(b,2)

ifb(i,j)>0

HXY=HXY-b(i,j).*log2(b(i,j));end

end

end

HXY

实验三:

离散信道的平均互信息的计算

1.【习题3.1】

设信源

通过一干扰信道,接收到符号为Y[力,丫2],其信道矩阵为:

51

P66

31

4'4

1)求信源X中事件X1和X2分别含有的自信息;

2)收到消息yj(j1,2)后,获得的关于Xi(i1,2)的信息量;

3)求信源X和输出变量丫的信息熵;

4)信道疑义度H(X|Y)和噪声熵H(Y|X);

5)接收到消息丫后获得的平均互信息;答案:

1.I(x1)0.737I(x2)1.3219

2.

0.3219

1(X1;%)0.0589,1(心y2)0.263,1(x?

;yj0.0931,1(x?

;y?

3.H(X)0.971,H(Y)0.7219

4.H(X|Y)0.9635H(Y|X)0.7145

5.I(X;Y)0.0074

2.二元信道的互信息与信源分布的关系有二元信源:

X01p(x)1

0.80.2

0.20.8

有二元信道,其传递矩阵为:

P1pp,其中p0.2,即传递矩阵Pp1p

编程实现下面题目:

1)画出平均互信息I(X;Y)随信源分布的关系曲线,并求出最大平均互信息

验证:

信道容量C(最大平均互信息)满足:

C1H(p)

2)验证:

信道容量C(最大平均互信息)满足:

C1H(p)

实验四:

离散信道及其信道容量

一、实验设备:

1、计算机

2、软件:

Matlab

二、实验目的:

1、了解信道传输概率的状态图和信道转移概率矩阵特点;

2、了解什么是信道容量和最佳输入概率分布;

3、列出计算信道容量和平均互信息的计算步骤;

4、熟悉Matlab编程;

三、实验内容:

1、写出几种特殊离散信道的信道容量计算的Matlab程序。

2、将程序在计算机上仿真实现,验证程序的正确性。

3、完成习题

四、实验报告要求简要总结离散信道的特点及信道容量的计算,并写出具体仿真步骤。

习题:

计算下面几类信道的信道容量

C:

1无损信道

1/2

1/2

0

0

0

0

P0

0

3/5

3/10

1/10

0

Clogr

0

0

0

0

0

1

答案:

c=1.585

2无噪有损信道

1

0

P

1

0

Clogs

0

1

答案:

c=1

3对称

尔离

散信

【例

3.6】

1

1

1

1

P

3

1

3

1

6

1

6

1

ClogsH(P1LPs)

6

6

3

3

答案:

c=0.0817

4一般信道,其信道矩阵为:

求1)其信道容量C,2)最佳输入分布p(aj

答案:

4.C0.3109,

p(a)(0.1702,0.3955,0.4343)

beta=

-1.9732

-1.1610

-0.8927

pa=

0.17020.39550.4343

解:

一般信道信道容量计算步骤:

ss

(1)p(bj|ai)jp(bj|a)ogp(bj|aj;求j

j1j1

(2)clog2

ji

(3)p(bj)2jc求p(bj)

r

(4)p(bj)p(ai)p(bjIai)求p(aj

i1

实验五:

连续信源的差熵与波形信道的信道容量

一、实验设备:

1、计算机

2、软件:

Matlab

二、实验目的:

1、熟悉连续信源的特点;

2、学习仿真连续信源的方法

3、学习连续信源平均信息量的计算方法

4、熟悉Matlab编程;

三、实验内容:

1、写出计算连续信源平均信息量的Matlab程序。

2、将程序在计算机上仿真实现,验证程序的正确性。

3、完成习题并写出具体实现步骤。

四、实验报告要求

简要总结连续信源的特点及连续信源平均信息量的计算

知识点:

Matlab符号运算

1、定义符号:

symsx定义表达式里面的变量

2、定义函数:

p=1/sqrt(2*pi*uA2)*exp(-(x-m)A2/(2*uA2));

x的在负无穷到正无穷范围内

3、积分:

int(f,x,-inf,inf);求表达式f的对符号变量

定积分

int(f,v,a,b)求表达式f的对符号变量v的在(a,b)范围内定积分

例题:

求x21

I22dx,

(x2x2)

symsx

f=(xA2+1)/(xA2-2*x+2)A2;

I=int(f)

4、符号运算中的运算符

(1)基本运算符

符号矩阵:

“+”“”,

a)?

?

符号数组:

”“”,“•分别实现符号数组的乘、除、求幕,即数组间元素与元素的运算。

没有Iog2和loglO,其余与数值运算相同

(2)关系运算符

运算符“==”“~=”

5、连续信源的差熵与波形信道的信道容量:

h(x)rp(x)logp(x)dx

R

Blog(lNS)

练习:

、计算下面几类信源的差熵:

1均匀分布连续信源

p(x)

ba(axb)

0(xb,xa)

其中b

8,a4

symsx,a=4;

b=8;

p=1/(b-a);

f=P*(log(p)/log

(2));hx=-int(f,x,a,b);hx=double(hx);

hx

 

2咼斯信源

其中m3,24

3指数分布信源【习题4.2]

p(x)ex(x0;0)

其中1/44拉普拉斯概率分布信源【习题4.2]

1p(x)2eIx(x;0)

其中1/4

解答:

均匀分布信源的差熵为:

hlog(ba)2

高斯分布信源的差熵为:

h1log(2e2)3.0471

指数分布信源的差熵为:

hlog(e)3.4427

拉普拉斯分布信源的差熵为:

hlog(送)4.4427

二、波形信道的信道容量

实验目的:

掌握香农公式,即信息传输率、带宽、信噪比的关系

CWlog(1-pS)

【习题4.18】设在平均功率受限高斯加性波形信道中,信道带宽为3kHz,又设(信

号功率+噪声功率”噪声功率=10dB。

(即10lg(1空)10dB,其中lg是以10为底Pn

的对数)。

1)试计算该信道传送的最大信息率(单位时间);

2)若信噪比降为5dB,要达到相同的最大信息传输率,信道带宽应是多少?

答案:

1.最大信息传输率Rt9965.784(bit/s)

2.带宽应为:

W=4.8439e+003

实验六:

无失真信源编码与保真度准则下的信源编码

一、实验设备:

1、计算机

2、软件:

Matlab

二、实验目的:

1、理解无失真信源编码与保真度准则下的信源编码的物理意义;

2、理解无失真信源编码与保真度准则下的信源编码的区别;

3、熟悉Matlab编程;

三、实验内容:

1、学习应用信源编码定理解决实际问题。

2、将程序在计算机上仿真实现,验证程序的正确性。

3、完成习题并写出具体实现步骤。

四、实验报告要求

写出习题实现的具体步骤习题:

SS2

41,每秒钟发出2.66个信源符号

55

将此信源的输出符号送入某一个二元信道中进行传输(假设信道是无噪无损的)而信道每秒钟只传递两个二元符号。

试问信源不通过编码能否直接与信道连接?

若通过适当编码能否在此信道中进行无失真传输?

若能连接,试说明如何编码并

说明原因。

0111

 

实验七:

有噪信道编码定理

一、实验设备:

1、计算机

2、软件:

Matlab

二、实验目的:

1、理解有噪信道编码定理的物理意义;

2、熟悉Matlab编程;

三、实验内容:

1、学习应用有噪信道编码定理解决实际问题。

2、将程序在计算机上仿真实现,验证程序的正确性。

3、完成习题并写出具体实现步骤。

四、实验报告要求

写出习题实现的具体步骤。

习题:

1

1

1

2

3

6

1、(习题6.1)设有一离散信道,其信道传递矩阵为:

1

1

1,并设

6

2

3

1

1

1

3

6

2

11

P(Xi)-,p(x2)p(x3)-,试分别按最小错误概率准则与最大似然译码准则确

定译码规则,并计算相应的平均错误概率。

实验八、九:

无失真的信源编码(Huffman、香农-费诺-埃利斯

编码编码)

一、实验设备:

1、计算机

2、软件:

Matlab

二、实验目的:

1、掌握无失真的信源编码的基本原理;

2、熟练掌握Huffman以及香农-费诺-埃利斯编码的方法步骤;

三、实验内容:

1、根据Huffman编码的方法步骤,用Matlab编写二元Huffman编码的程序;

2、用习题1验证程序的正确性。

3、编写程序实现香农-费诺-埃利斯编码,并完成习题。

四、实验报告要求

1、分析给出的二元Huffman编码的Matlab源程序的局限性,考虑如何改进。

2、写出习题实现具体步骤。

源程序:

function[h,l]=huffman(p)

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

error('Notaprob.vector,negativecomponent(s)')

end

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

error('Notaprob.vector,componentsdonotaddupto1')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)='O:

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)='O:

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);

习题:

1、某一离散信源概率分布:

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

S0s2s3可

2、设一离散无记忆信源P(s)yyyy,对其进行香农-费诺-

埃利斯编码,并求平均码长及编码效率。

答案:

q邑s3S4(001,10,1101,1111),L2.75(二元码/信源符号)

香农-费诺-埃利斯编码步骤:

1

2)l(aQlog()1

P(aQ

3)Wk取F(S)的二进制小数的小数点后l(ak)作为ak所对应的码字

%求码字,编码过程

实验十信道的纠错编码(线性分组码)

一、实验设备:

1、计算机

2、软件:

Matlab

二、实验目的:

通过线性分组码的实验,进一步加深对线性分组码编码理论的理解。

三、实验内容:

1、对线性分组码编码规则进行验证。

2、对译码数据输出进行验证。

四、实验报告要求

1、完成例题,并写出具体实现步骤。

2、分析整理实验数据。

例题:

已知(7,3)码的生成矩阵为G=[1001110;0100111;0011101],列出

所有许用码组,并求监督矩阵,检验该码的纠错能力。

源程序:

%线性分组码编码器及译码器

%可实现循环码编译

%Purpose:

%Linerencodinganddecoding

functionlinearcoding

%Definevariables:

%G生成矩阵

%u编码输出

%input_nk输入序列

%input_C纠错输出码序列

%R信道输出码

%H校验矩阵

%e差错图案

%s伴随式

%信道编码

input_nk=input('enterthesymbol:

');%input_nk输入序列(输入信息位)

G=input('inputG:

');%G生成矩阵

[c,d]=size(G);%求矩阵的行、列数

O=G(:

1:

c);

Q=inv(O);%生成o的逆矩阵

G=Q*G;

G=abs(rem(G,2));%abs函数可以求实数的绝对值P=G(:

c+1:

d);

a=d;

b=c;if(rem(length(input_nk),b)~=0)input_nk=[input_nk,zeros(1,b-rem(length(input_nk),b))];

end

n=length(input_nk)/b;u=zeros(1,n);

j=1;

fori=1:

b:

n*b

forp=1:

1:

a

sum=0;

forq=1:

1:

bsum=input_nk(1,q+i-1)*G(q,p)+sum;

endu(j)=rem(sum,2);j=j+1;

end

end

%信道纠错译码

R=input('inputR:

');%R信道输出码即接收码字H=[P',eye(a-b)];F=H';%H校验矩阵if(rem(length(R),a)~=0)

R=[R,zeros(1,a-rem(length(R),a))];

end

n=length(R)/a;

s=zeros(1,n*(a-b));%s伴随式

q=1;

fori=1:

a:

n*a

forj=1:

1:

(a-b)

sum=0;

fork=1:

1:

a

sum=R(1,k+i-1)*F(k,j)+sum;

end

s(q)=rem(sum,2);q=q+1;

end

end

e=zeros(1,length(R));

l=zeros(1,n*(a-b));

z=1;

fork=1:

(a-b):

n*(a-b)

fori=1:

1:

a

e(1,z)=1;

forj=1:

1:

(a-b)if(F(i,j)==1)l(j)=s(j+k-1);elsel(j)=1-s(j+k-1);end;e(1,z)=l(j)*e(1,z);

end

z=z+1;

end

end

forv=1:

1:

length(R)input_C(1,v)=rem(R(1,v)+e(1,v),2);

end

%结果输出

disp('theoutputcode:

');

disp(u);

disp('thecorrectedcode:

');disp(input_C);%input_C纠错输出码序列

习题:

1

0

0

0

1

1

1

1、若(7,4)码的生成矩阵为

0

G

1

0

0

1

0

1

0

0

1

0

0

1

1

0

0

0

1

1

1

0

1)写出(7,4)码的全部码元;

(注意考虑如果

G不是典型生成矩阵如何?

编程

应体现出如何把生成矩阵典型化)

2)求校验矩

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

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1