实验3-率失真函数计算的程序设计.docx_第1页
实验3-率失真函数计算的程序设计.docx_第2页
实验3-率失真函数计算的程序设计.docx_第3页
实验3-率失真函数计算的程序设计.docx_第4页
实验3-率失真函数计算的程序设计.docx_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验3 率失真函数计算的程序设计一、实验问题假定一个离散无记忆信源(DMS)的信源符号集为Au=1,2,.,r,其概率分布为p(u);信宿符号集为Av=1,2,.,s。而失真侧度矩阵为一个rs维矩阵D=dij。利用Matlab画出率失真函数R(d)的曲线图。二、实验环境计算机、Windows 2000 或以上、Matlab 6.5或以上三、实验目的1 了解率失真函数性质、意义。2 掌握简单的率失真函数计算方法;3 掌握使用Matlab实现一般率失真函数的计算方法;4 掌握Matlab求解非线性方程组的方法。四、实验内容1 从理论上计算r=s=2。p(u=1)=p,p (u=2)=1-p;d=0,1;1,0的率失真函数R(d)。2 对一般性的DMS信源,计算率失真函数R(d)的理论公式进行推导。3 找出比较合适的方程求解方法。4 使用编制Matlab编制程序求解一般的率失真函数R(d)。5 给定r=s=2。p(u=1)=0.4,p=(u=2)=0.6;d=0,1;1,0,测试程序,即比较程序运行结果与理论计算结果,6 改变参数,画出函数图。7 显示在计算精度为0.000001以及运行计算的配置(CPU型号、CPU的频率、内存的)的条件下,系统循环次数、累计计算时间、平均每次循环所用时间等。五、实验要求1. 提前预习实验,认真阅读实验原理。2. 认真高效的完成实验,实验过程中服从实验室管理人员以及实验指导老师的管理。3. 将实验报告写成论文的形式。要求有:l 问题的提出:包括R(d)的物理意义、用途(可以举出具体的用途)、计算的困难性等。l 解决问题的原理方法:包括所有的公式推导的细节。l 解决问题的具体方法:包括程序框图及Matlab源程序。l 实验结果:利用你的程序给出不同参数得到的实验结果,包括实验曲线图、程序循环次数、累计计算时间、平均每次循环所用时间等。l 结果分析:包括R(d)的性质、程序收敛情况、程序改进的方向等。4. 每个同学必须独立完成实验(不能抄袭,否则两人均为零分),实验成绩是该门课程成绩的主要依据。六、实验原理1R(d(S)的表示方法计算dmin和dmax是很容易的。; 。当ddmax时,R(d)=0。当dmin ddmax时,R(d)=minI(U;V):E(d)= d。 在数学上,就是在约束条件: (1) (2)的约束下求平均信息量的条件极小值。为此引入待定常数S和mu(u=1,2,.,r),并作辅助函数 (3)其中由得,为方便引入参数,则有 (4)显然(4)提供rs个方程,(2)提供r个方程,而(1)提供1各方程,共rs+r+1个方程;而有rs个未知数p(v|u)、r个未知数lu 及未知数S,共rs+r+1未知数,显然可以求解。为方便起见,我们保留S作为参数。这样得到: (5) (6) (7) (8)很容易得到,即S是率是失真函数的导数。当S-时,d(S) dmin;参量S是d的递增函数,当d从dmin到dmax逐渐增大时,S将随d增大而增大,当d=dmax时,S达到最大值Smax0&p1);P=p(index);h(index) = -P.*log(P)-(1-P).*log(1-P);end2.根据实验原理,很容易知道,delta的最小值和最大植:delta_min=sum(Pu.*min(D,1);delta_max=min(Pu*D);建立求率失真度的文件:R_delta.m%率失真函数计算function R,delta=R_delta(Pu,D,eps)% Pu信源概率矢量,D失真测度矩阵(rxs阶)% 信源Ur,信宿Vsr,s=size(D);%delta的最小值和最大植delta_min=sum(Pu.*min(D,1);delta_max=min(Pu*D);R=; delta=;%给定初始值%P(u,v)=P(V|U)P=ones(r,s)/s; %信道模型SS=100:-0.1:-100; SS=-exp(SS);for S=SS Pv=Pu*P; Ed0=sum(Pu*(P.*D); %Rs0=sum(Pu*(P.*log(P) - sum(Pv.*log(Pv); Rs0=0; for u=1:r for v=1:s if P(u,v)=0 & Pu(u)=0 Rs0 = Rs0 + Pu(u)*P(u,v)*log(P(u,v)/Pv(v); end end end P=exp(S*D); for i=1:s P(:,i)=P(:,i)*Pv(i); end for i=1:r SumP=sum(P(i,:); P(i,:)=P(i,:)/SumP; end Km=50000; for k=1:Km Pv=Pu*P; Edn=sum(Pu*(P.*D); %Rsn=sum(Pu*(P.*log(P) - sum(Pv.*log(Pv); Rsn=0; for u=1:r for v=1:s if P(u,v)=0 & Pu(u)=0 Rsn = Rsn + Pu(u)*P(u,v)*log(P(u,v)/Pv(v); end end end P=exp(S*D); for i=1:s P(:,i)=P(:,i)*Pv(i); end for i=1:r SumP=sum(P(i,:); P(i,:)=P(i,:)/SumP; end if abs(Edn - Ed0)eps & abs(Rsn - Rs0)eps break; end Ed0=Edn; Rs0=Rsn; end if kKm R=R,Rsn; delta=delta,Edn; endend3.测试,以汉明失真测度矩阵为失真测度,分别绘制不同精度和不同输入概率下的率失真函数曲线测试1:对于不同的精度测试程序如下clear allalpha=2;p=0.5;D=0,alpha;alpha,0; %汉明失真矩阵Pu=p,1-p; %信源概率统计delta=0:p/1000:p;R=Hp(p) - Hp(delta/alpha); %汉明失真,率失真函数理论值eps1=0.001; %精度为eps1=0.001R1,delta1=R_delta(Pu,D,eps1);eps2=0.000000001; %精度为eps2=0.000000001R2,delta2=R_delta(Pu,D,eps2);plot(delta,R,b,delta1,R1,r-.,delta2,R2,m-*);legend(理论值,eps1=0.001,eps2=0.000000001)测试2:对于不同的概率输入,测试程序如下:clear allalpha=2;p1=0.5;p2=0.2;D=0,alpha;alpha,0; %汉明失真矩阵Pu1=p1,1-p1; %信源概率统计Pu2=p2,1-p2; %信源概率统计delta1=0:p1/1000:p1;delta2=0:p2/1000:p2;eps=0.00001; %精度为eps

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论