您好,欢迎访问三七文档
云南大学数学与统计学实验教学中心实验报告第1页共5页云南大学数学与统计学实验教学中心实验报告课程名称:计算机网络实验学期:2012-2013学年第二学期成绩:指导教师:陆正福学生姓名:卢富毓学生学号:20101910072实验名称:率失真函数计算实验要求:必做实验学时:4学时实验编号:No.12实验日期:2013/3/28完成日期:2013/6/6学院:数学与统计学院专业:信息与计算科学年级:2010级一、实验目的:通过实验掌握率失真实验的构造算法,以及其重要思想。二、实验内容:查阅资料,完成率失真函数的计算实验(提示:其算法类似于信道容量的迭代计算算法)三、实验环境Win7、Matlab四、实验过程(请学生认真填写):实验过程、结果以及相应的解释:1.预备知识信息论第二章的熵是针对不失真的情况,而在实际应用中只需要保留信息的主要特征即可,信号允许一定程度的失真,而率失真理论就是在这种情况下提出的。在实际问题中,信号有一定的失真是可以容忍的,但是当失真大于某个限度是,信号将会被严重损害,为此引入了失真函数d的概念。2.实验过程A、原理分析:计算率失真函数的算法如下:计算信源的信息率失真函数R(D),即已知A、信源的概率分布43214321XapapapapaaaaXPB、失真函数sjribadji,...,2,1,,...,2,1,在这里采用的Blahut-Arimoto算法来计算率失真函数,这是一种交替迭代算法,与求信道容量相仿。具体迭代算法步骤如下:A、先假定一个负数做为1S,选定初始概率转移矩阵srabpij1/1组成(sr)阶初始矩阵B、把选定的初始概率转移矩阵ijabp/1代入表达式riijijabpapbp1*/中,云南大学数学与统计学实验教学中心实验报告第2页共5页得到相应的jbp1,然后将jbp1代入表达式sjbaSdjbaSdjijjijiebpebpabp1,,*/中,得到相应的ijabp/2C、再用ijabp/2代入表达式riijijabpapbp1*/中,得到相应的jbp2,然后将jbp2代入表达式sjbaSdjbaSdjijjijiebpebpabp1,,*/中,得到相应的ijabp/3D、以此类推,直到risjjiijninbadabpapS111,/D与risjjiijninbadabpapS11111,/D,jnijnrisjijninbpabpabpapSR/log/111与jnijnrisjijninbpabpabpapSR1111111/log/的差值在允许的精度之内,则1SRn或11SRn就是这个S1值所对应的信息率失真函数R(S1)的近似值。E、再选定一个略大一点的负数做为S2值,重复以上迭代过程,得到这个S2值所对应的信息率失真函数R(S2)的近似值。F、这个过程一直到信息率失真函数R(Smax)接近0为止,随着S1,S2,S3,...,Smax的选定就可以得到信息率失真函数R(S)的曲线。由于matlab在处理矩阵上很方便以及时间的不足,本实验就用matlab来实现的。B、具体代码如下://具体实现代码function[]=RD(Pa,d,S)formatlongS=[];r=input('输入信源数r=');s=input('输出信源数s=');d=input('失真矩阵d=');Pa=input('输入概率分布Pa=');S(1)=-99.5times=100;pba=[];RS=[];DS=[];m=1;forz=1:times%初始化¯Pba(1:r,1:s,1)=1/(r*s)*ones(r,s);forj=1:sPb(j,1)=0;fori=1:rPb(j,1)=Pb(j,1)+Pa(i)*Pba(i,j,1);endendfori=1:rtemp(i)=0;forj=1:s云南大学数学与统计学实验教学中心实验报告第3页共5页temp(i)=temp(i)+Pb(j,1)*exp(S(m)*d(i,j));endendfori=1:rforj=1:sPba(i,j,2)=(Pb(j,1)*exp(S(m)*d(i,j)))/temp(i);end%计算D(1)(S)和R(1)(S)D(1)=0;fori=1:rforj=1:sD(1)=D(1)+Pa(i)*Pba(i,j,1)*d(i,j);endendR(1)=0;fori=1:rforj=1:sif(Pba(i,j,1)~=0)R(1)=R(1)+Pa(i)*Pba(i,j,1)*log2(Pba(i,j,1)/Pb(j,1));endendendn=2;while(1)%计算pn(bj)forj=1:sPb(j,n)=0;fori=1:rPb(j,n)=Pb(j,n)+Pa(i)*Pba(i,j,n);endend%计算pn+1(bj/ai)fori=1:rtemp(i)=0;forj=1:stemp(i)=temp(i)+Pb(j,n)*exp(S(m)*d(i,j));endendfori=1:rforj=1:sif(temp(i)~=0)Pba(i,j,n+1)=(Pb(j,n)*exp(S(m)*d(i,j)))/temp(i);endendend%计算D(n)(S)和R(n)(S)D(n)=0;fori=1:rforj=1:sD(n)=D(n)+Pa(i)*Pba(i,j,n)*d(i,j);endendR(n)=0;fori=1:rforj=1:sif(Pba(i,j,n)~=0)R(n)=R(n)+Pa(i)*Pba(i,j,n)*log2(Pba(i,j,n)/Pb(j,n));end云南大学数学与统计学实验教学中心实验报告第4页共5页endendif(abs(R(n)-R(n-1))1e-7)if(abs(D(n)-D(n-1))1e-7)break;endendn=n+1;endS(m+1)=S(m)+0.5;pba=[Pba(:,:,:)];RS=[RSR(n)];DS=[DSD(n)];m=m+1;endend[k,l,q]=size(pba);Pba=pba(:,:,q);Rmin=min(RS);Dmax=max(DS);Smax=S(m-1);fprintf(2,'迭代结果如下:\n');fprintf(2,'最小信息率Rmin:\n');disp(Rmin);fprintf(2,'最佳转移概率分布Pba:\n');disp(Pba);plot(DS,RS);xlabel('D');ylabel('R(D)');title('率失真函数图象')结果如下:输入信源数XYIn=2输出信源数XYOut=2失真矩阵d=[01;10]输入概率分布Pa=[0.50.5]结果如图://得到结果与真实结果一样。说明正确。其图形如下:云南大学数学与统计学实验教学中心实验报告第5页共5页五、实验总结1.遇到的问题及分析:遇到问题:核心问题,具体算法不会。分析并解决:通过查阅课本中率失真的概念以及上网查阅资料得以解决。2.体会和收获。编程实现率失真函数的实验,熟悉的掌握了率失真的运算。六、参考文献计算机网络课本。七、教师评语:
本文标题:率失真函数计
链接地址:https://www.777doc.com/doc-1761494 .html