信息论试验指导书.docx
- 文档编号:3674660
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:18
- 大小:22.41KB
信息论试验指导书.docx
《信息论试验指导书.docx》由会员分享,可在线阅读,更多相关《信息论试验指导书.docx(18页珍藏版)》请在冰豆网上搜索。
信息论试验指导书
信息理论与编码实验指导书
电子与电气工程学院
罗晓琴编
实验要求
1、实验前认真阅读实验指导书的内容,并完成预习任务。
2、复习Matlab的相关知识,完成仿真。
3、要熟悉本次实验的任务。
4、实验过程中要认真记录实验结果,仿真结果需经指导教师审阅。
5、实验后每位同学要独立完成实验报告的内容。
实验一离散信源的自信息量和熵…………………………………………………3
实验二最大离散熵定理……………………………………………………………6
实验三费诺编码……………………………………………………………………9
实验四霍夫曼编码…………………………………………………………………13
实验五香农编码……………………………………………………………………16
实验一:
计算离散信源的自信息量和熵
一、实验目的
1、熟悉离散信源的特点。
2、学习Matlab仿真离散信源的方法。
3、学习离散信源自信息量和信源熵的计算方法。
4、熟悉Matlab编程。
二、实验设备
1、计算机
2、软件:
Matlab
三、实验原理
本实验主要完成信源概率分布的自信息量以及信源熵的计算。
计算公式如下:
一个字符它所携带的信息量是和该字符出现的概率有关,概率可以表征自信息量的大小自信息的计算公式为:
1gI(a)?
lo2pa自信息量有两个含义:
第一、当事件发生前,表示该事件发生的不确定性;
第二、当事件发生后,标是该事件所提供的信息量.
自信息量的单位取决于对数所取的底,若以2为底,单位为比特,以e为底,单位为奈特,以10为底,单位为哈特。
在通信系统中,通常取比特为单位,底数2略去不写。
由于自信息I(a)是一个随机变量,不能用来表征整个信源的不确定度。
所以我们用平均自信息量来表征整个信源的不确定度。
平均自信息量就是信源输出所有消息的自信息的数学期望,又称为信息熵、信源熵,简称熵。
熵(平均自信息)的计算公式为:
qq1?
?
pplogp?
?
H(x)?
logi2i2ip1?
?
1iii信息熵H(x)是对信源的平均不确定性的描述。
它从平均意义上来表征信源的总体信息测度。
对于某特定的信源,其信息熵是一个确定的数值。
信息熵具有如下三种物理意义。
第一,信息熵H(x)是表示信源输出后,每个消息或符号所提供的平均信息量。
第二,信息熵H(x)是表示信源输出前,信源的平均不确定性。
第三,信息熵H(x)可表征变量X的随机性。
由此可以看出,自信息量与信息熵的含义是不同的:
(1)信息熵是表征信源本身统计特性的一个物理量,它表示信源的平均不确定性,是信源输出的每一个消息所能提供的平均信息量;自信息量表示的是每一个消息的信息量度。
.
(2)信息熵是针对信源的,是信源输出的信息量,表示信源输出前的平均不确定性;自信息量是针对信宿的,是接收者在消除了信源不确定性后所获得的信息的度量。
(3)若信道无干扰,接收者获得的信息量在数量上等于信源的熵,若有干扰时,则两者不相等。
四、实验内容
1、已知信源概率分布为:
p=[1/2,1/4,1/8,1/8],编写出计算自信息量的Matlab程序。
程序:
[I]=deal(p)functionn=4;i=1:
nforI(i)=-log2(p(i));
end打开空白的M文件编辑器,将上述程序输入。
保存。
通过M文件调用的形式完成仿真。
步骤:
在commandwindow中输入p=[1/2,1/4,1/8,1/8]→调用deal.M文件→输入[I]=deal([1/2,1/4,1/8,1/8]),仿真实现。
2、写出信源概率分布为:
p=[1/2,1/4,1/8,1/8]离散信源熵的Matlab程序。
程序:
[H]=deal(p)functionn=4;H=0;i=1:
nforI(i)=-log2(p(i));H=H+p(i)*I(i);end打开空白的M文件编辑器,将上述程序输入。
保存。
通过M文件调用的形式完成仿真。
步骤:
在commandwindow中输入p=[1/2,1/4,1/8,1/8]→调用deal.M文件→输入[H]=deal([1/2,1/4,1/8,1/8]),仿真实现。
3、写出信源概率分布为:
p=[1/2,1/4,1/8,1/8]的离散信源自信息量和信源熵的
Matlab程序。
[IH]=deal(p)functionn=length(p);H=0;i=1:
nforI(i)=-log2(p(i));H=H+p(i)*I(i);end步骤:
在commandwindow中输入p=[1/2,1/4,1/8,1/8]→调用deal.M文件→输,仿真实现。
[IH]=deal([1/2,1/4,1/8,1/8])入.
4、将程序在计算机上仿真实现,验证程序的正确性并完成思考题的程序设计。
五、思考题
1、说明离散信源自信息量和信息熵的不同含义。
2、甲地天气预报构成的信源空间为:
X大小
1111(x)p3446
乙地信源空间为:
Y晴小雨
53(y)p88
求此两个信源的熵。
求各种天气的自信息量。
六、实验报告要求
总结离散信源的特点及离散信源平均信息量的计算,写出实验内容中的仿真程序及结果,完成思考题中MATLAB实现语句,并附上仿真实现的结果。
实验二最大离散熵定理
一、实验目的
1、熟悉熵函数的基本性质。
2、掌握最大熵定理。
3、学习Matlab仿真二维曲线图的方法。
4、熟悉Matlab编程。
二、实验设备
1、计算机
2、软件:
Matlab
三、实验原理
信息熵H(x)是随机变量X的概率分布p(x)的函数,它有如下性质:
1、对称性
H(P)=H(p,p,p,…,p)=H(p,p,…,pp)=…=H(p,p,p,p,…,p)n-13nn2n,3112231概率分布的顺序是可以任意互换的,互换后的概率分布表示的是相同的随机变量,随机变量的总体结构没有变化,则可证明对应的熵函数的值也不会变。
该性质表明熵函数只与信源的总体统计特性有关。
这也说明,信息熵只抽取了信源信息输出的统计特征,而没有考虑信息的具体含义和效用。
也就是说,信息熵有它的局限性,它不能描述时间本身的具体含义和主观价值等。
2、确定性
H(1,0)=0
在概率矢量P=(p,p,p,…,p)中,只要有一个分量为1,其它分量必为n2310,这由概率分布的完备性可以得到。
也就是说信源的平均不确定度为0。
3、非负性
H(P)=H(p,p,p,…,p)≥0
n213因为P=(p,p,p,…,p)是概率分布,0≤pi≤1,-logpi≥0,故上式成立。
n132需要注意的是,只有离散信源熵才有非负性,连续信源的相对熵将可能出现负值。
4、扩展性
H?
?
(p,p,p,)=…,p-(p,p,p,…,p)
,Hlimnnn1123321n?
?
?
0这个性质的含义是:
增加一个基本不会出现的小概率事件,信源的熵保持不变。
虽然小概率事件的出现给予接收者的信息量很大,但在熵的计算中,它占的比重很小,可以忽略不计,这也是熵的总体平均性的体现。
5、连续性
H?
?
Hlim(p,p,p,…,,p+p)=)
-,p(p,p,…,pnn112q332n-11n?
?
?
0即信源概率空间中的概率分量的微小波动,不会引起熵的变化。
6、递增性
H(p,p,p,…,p,q,q,q,…q)=H(p,p,p,…,p)+n3n-1311m22123pH(q/p,q/p,q/p,…q/p)n2nn1nnm3q+q+q,…+q=pn
12m3这个性质表明,假如有一个信源的n个元素的概率分布为(p,p,p…,,321.
p),其中某个元素p又被划分为m个元素,这某个元素的概率之和等于p,,这nnn样得到的新信源的熵增加了一项,增加的一项是由于划分产生的不确定性。
7、极值性
H(p,p,p,…,p)≤H(1/n,1/n,…,1/n)=logn
n213上式中,当且仅当n个离散消息等概率出现时等式成立。
这一性质说明,对不同概率分布p(x)所构成的熵,只有当等概率分布时,信源的不确定性最大,i熵达到极大值。
8、上凸性
熵函数H(p)是概率矢量P=(p,p,p,…,p)的严格上凸函数,正因为熵函数n231具有上凸性,所以熵函数具有极值,熵函数的最大值存在。
9、唯一性
四、实验内容
1、已知二元信源概率空间为p(x)=[x1-x],对应的二元信源的熵可表示为:
H(x)=-xlog2(x)-(1-x)log2(1-x)。
通过Matlab软件画出概率分布函数p(x)与熵函数之间的二维曲线图,编写出程序。
仿真结果如下图所示:
编程过程中要注意的地方:
x的步长设置为0.001,H(x)的运算为矩阵运算,必须用点乘:
“.*”。
2、用同样的方法画出三元信源空间的熵函数与概率分布的三维曲线图。
仿真结果如下所示。
.
1.10.1
0.0.0.3330.333300
p2p1
五、思考题
1、熵函数的基本性质有哪些?
2、最大熵定理的结论是什么?
六、实验报告要求
写出用Matlab软件画出概率分布函数p(x)与熵函数之间的二维、三维曲线图的程序,并附上仿真结果图。
并对本实验进行总结、分析。
费诺编码实验三一、实验目的1、掌握费诺编码的编码原理Matlab编程。
2、熟悉Matlab仿真费诺编码的过程。
3、通过二、实验设备1、计算机Matlab2、软件:
三、实验原理:
费诺编码的步骤、将概率按从大到小的顺序排列;1、按编码进制数将概率分组,使每组概率和尽可能接近或相等;2
、给每组分配一位码元;3
,直到概率不再可分为止。
32和4、将每一分组再按同样原则划分,重复
四、实验内容xxxXxxx?
?
?
?
324651进行二进制费诺对给定信源?
?
?
?
?
)04Xq(07.04.0.3.10090.0.0?
?
?
?
MATLAB编码,通过进行编码过程仿真,并计算平均码长。
程序如下:
clc;
clear;
A=[0.4,0.3,0.1,0.09,0.07,0.04];
A=fliplr(sort(A));
[m,n]=size(A);
fori=1:
n
B(i,1)=A(i);
end
a=sum(B(:
1))/2;
fork=1:
n-1
ifabs(sum(B(1:
k,1))-a)<=abs(sum(B(1:
k+1,1))-a)
break;
end
end
fori=1:
n
ifi<=k
B(i,2)=0;
else
B(i,2)=1;
end
end
END=B(:
2)';
END=sym(END);
j=3;
while(j~=0)
p=1;
while(p<=n)
x=B(p,j-1);
forq=p:
n
ifx==-1
break;
else
ifB(q,j-1)==x
y=1;
continue;
else
y=0;
break;
end
end
end
ify==1
q=q+1;
end
ifq==p|q-p==1
B(p,j)=-1;
else
ifq-p==2
B(p,j)=0;
END(p)=[char(END(p)),'0'];
B(q-1,j)=1;
END(q-1)=[char(END(q-1)),'1'];
else
a=sum(B(p:
q-1,1))/2;
fork=p:
q-2
ifabs(sum(B(p:
k,1))-a)<=abs(sum(B(p:
k+1,1))-a);
break;
end
end
fori=p:
q-1
ifi<=k
B(i,j)=0;
END(i)=[char(END(i)),'0'];
else
B(i,j)=1;
END(i)=[char(END(i)),'1'];
end
end
end
end
p=q;
end
C=B(:
j);
D=find(C==-1);
[e,f]=size(D);
ife==n
j=0;
else
j=j+1;
end
end
B
A
END
fori=1:
n
[u,v]=size(char(END(i)));
L(i)=v;
end
avlen=sum(L.*A)
五、思考题
xxxxxXx?
?
?
?
146523对给定信源进行二进制费诺?
?
?
?
?
q(X100.05).025.0250.0.20.150?
?
?
?
编码。
写出编码码字,并计算平均码长。
六、实验报告要求
写出用Matlab进行费诺编码的程序,并给出仿真结果。
霍夫曼编码实验四
一、实验目的、掌握费诺编码的编码原理1Matlab编程。
、熟悉2Matlab仿真霍夫曼编码的过程。
3、通过二、实验设备1、计算机Matlab2、软件:
三、实验原理:
霍夫曼编码的步骤并设法按逆次序分配码字的长度。
1、把信源符号按概率大小顺序排列,、在分配码字长度时,首先将出现概率最小的两个符号的概率相加合成一2个概率。
、把这个合成概率看成是一个新组合符号的概率,重复上述做法直到最后3只剩下两个符号概率为止。
、完成以上概率顺序排列后,再反过来逐步向前进行编码,每一次有二个4。
0,概率小的赋为1分支各赋予一个二进制码,可以对概率大的赋为四、实验内容xXxxxxxx?
?
?
?
1547263进行二进制对给定信源?
?
?
?
?
01.100.150.17.00(qX).2.190180.?
?
?
?
MATLAB进行编码过程仿真,并计算平均码长。
霍夫曼编码,通过程序如下:
clc;
clear;
A=[0.2,0.19,0.18,0.17,0.15,0.1,0.01];
按降序排列A=fliplr(sort(A));%T=A;
[m,n]=size(A);
B=zeros(n,n-1);
fori=1:
n
B(i,1)=T(i);
end
r=B(i,1)+B(i-1,1);
T(n-1)=r;
T(n)=0;
T=fliplr(sort(T));
t=n-1;
forj=2:
n-1
fori=1:
t
B(i,j)=T(i);
end
K=find(T==r);
B(n,j)=K(end);
r=(B(t-1,j)+B(t,j));
T(t-1)=r;
T(t)=0;
T=fliplr(sort(T));
t=t-1;
end
B;
END1=sym('[0,1]');
END=END1;
t=3;
d=1;
forj=n-2:
-1:
1
fori=1:
t-2
ifi>1&B(i,j)==B(i-1,j)
d=d+1;
else
d=1;
end
B(B(n,j+1),j+1)=-1;
temp=B(:
j+1);
x=find(temp==B(i,j));
END(i)=END1(x(d));
end
y=B(n,j+1);
END(t-1)=[char(END1(y)),'0'];
END(t)=[char(END1(y)),'1'];
t=t+1;
END1=END;
end
A
END
fori=1:
n
[a,b]=size(char(END(i)));
L(i)=b;
end
avlen=sum(L.*A)
H1=log2(A);
H=-A*(H1')
P=H/avlen%
五、思考题
xxxxxXx?
?
?
?
154236对给定信源进行二进制霍夫?
?
?
?
?
q(.05X).025250.0.20.150100.0?
?
?
?
曼编码。
写出编码码字,并计算平均码长。
六、实验报告要求
写出用Matlab进行霍夫曼编码的程序,并给出仿真结果。
实验五香农编码
一、实验目的
1、掌握香农的编码原理
2、熟悉C++编程。
3、通过C++仿真香农编码的过程。
二、实验设备
1、计算机
2、软件:
C++
三、实验原理
给定某个信源符号的概率分布,通过以下的步骤进行香农编码
1、将信源消息符号按其出现的概率大小排列:
p(x)?
p(x)?
?
p(x)n12K;2、确定满足下列不等式的整数码长i
?
1logpx)?
K?
?
log(x)?
p(2i2ii3、为了编成唯一可译码,计算第i个消息的累加概率:
1i?
?
p(x)p?
kik?
1P变换成二进制数。
、将累加概率4iPK位即为该消息符号的二进制码。
5、取二进制数的小数点后ii四、实验内容
xxxxxxXx?
?
?
?
1527346对给定信源进行二进制?
?
?
?
?
q(X)0.20.190.180.170.150.10.01?
?
?
?
香农编码,通过C++进行编码过程仿真。
香农(Shannon)编码参考程序
intmain()
{
intN;
cout<<”请输入信源符号个数:
”;cin>>N;
cout<<”请输入各符号的概率:
”< double*X=newdouble[N];//离散无记忆信源 inti,j; for(i=0;i { cout<<”X[”<>X[i]; } //由小到大排序 for(i=0;i for(j=i+1;j if(X[i] {doubletemp=X[i];X[i]=X[j];X[j]=temp;} int*K=newint[N];//确定码长 for(i=0;i { K[i]=int(-(log(X[i])/log (2)))+1;//确认码长为1-log2(p(xi)) if(K[i]==(-(log(X[i])/log (2)))+1)//当K[i]=-log2(p(xi))时,K[i]-- K[i]--; } //累加概率 double*Pa=newdouble[N];pa[0]=0.0; for(i=1;i pa[i]=pa[i-1]+X[i-1]; //将累加概率转换为二进制 string*code=newstring[N]; for(i=0;i for(j=0;j { doubletemp=Pa[i]*2; if(temp>=1)//累加概率乘2大于1,对应码字加1,累加概率自身取余 { code[i]+=”1”; Pa[i]=Pa[i]*2-1; } else//累加概率乘2小于1时,对应码字加0,累加概率自身取余 { code[i]+=”0”; Pa[i]*=2; } } for(i=0;i code[i]=code[i].substr(0,K[i]);//求码字 //输出码字 cout< Pa(x)”< for(i=0;i cout< K[i]< delete[]X; delete[]Pa; delete[]K; delete[]code; getch(); retuen0; } 五、思考题 xxxxxXx? ? ? ? 154263对给定信源进行二进制香农? ? ? ? ? q(.05X)10.025.0.25.200150.00? ? ? ? 编码。 写出编码码字,并计算平均码长。 六、实验报告要求 写出用C++进行香农编码的程序,并给出仿真结果。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信息论 试验 指导书
![提示](https://static.bdocx.com/images/bang_tan.gif)