实验3率失真函数的计算1.docx
- 文档编号:25157532
- 上传时间:2023-06-05
- 格式:DOCX
- 页数:10
- 大小:41.56KB
实验3率失真函数的计算1.docx
《实验3率失真函数的计算1.docx》由会员分享,可在线阅读,更多相关《实验3率失真函数的计算1.docx(10页珍藏版)》请在冰豆网上搜索。
实验3率失真函数的计算1
信息论与编码
实验3率失真函数计算的程序设计
学院:
物理与电子学院
班级:
电信1105班
姓名:
学号:
140411072
一、实验问题
假定一个DMS的信源符号集为A产{1,2,...,r},其概率分布为
p(u);信宿符号集为Av={1,2,....,s}o而失真侧度矩阵为一个rs
维矩阵D=[dij]o利用Matlab画出率失真函数R()的曲线图.
二、预备知识
预备知识:
信息论第二章的嫡是针对不失真的情况,而在
实际应用中只需要保存信息的主要特征即可,信号允许一定程
度的失真,而率失真理论就是在这种情况下提出的.在实际问题
中,信号有一定的失真是可以容忍的,但是当失真大于某个限度
是,信号将会被严重损害,为此引入了失真函数d的概念.
三、实验目的
1.了解率失真函数性质、意义.
2.掌握简单的率失真函数计算方法;
3.掌握使用Matlab实现一般率失真函数的计算方法;
4.掌握Matlab求解非线性方程组的方法.
四、实验要求
1.提前预习实验,认真阅读实验原理.
2,认真高效的完成实验,实验过程中服从实验室治理人员以及实验指导老师的治理.
五、实验内容
1.从理论上计算r=s=2op(u=1)=p,p(u=2)=1-p;d=[0,1;1,0]
2.
的率失真函数R()
对一般性的DMS信源,计算率失真函数R()的理论公
式进行推导
3.找出比拟适宜的方程求解方法.
4.使用编制Matlab编制程序求解一般的率失真函数
R().
5.给定r=s=2op(u=1)=0.4,p=(u=2)=0.6;d=[0,1;1,0],测试程序,即比拟程序运行结果与理论计算结
里H(p)H()0p
朱,R()
0p
6.改变参数,画出函数图.
7.显示在计算精度为0.000001以及运行计算的配置(CPU
型号、CPU的频率、内存的)的条件下,系统循环次数、累计计算时间、平均每次循环所用时间等.
六、实验原理
1.R((S))的表示方法
计算min和max是很容易的.minp(u).mind(u,v);vuAU
maxminp(u)d(u,v).当max时,R()=0.u
当minmax时,R()=min{I(U;V):
E(d)=}.
在数学上,就是在约束条件:
rsE(d)p(u)p(v|u)d(u,v)u1v1
(1)
sp(v|u)1v1
(2)
的约束下求平均无信息量
的条件极小值.为此引入待定常数S和u(u=1,2,...,r),弁作辅
助函数
rs
F[p(v|u)]p(u)p(v|u)log
U1V1
rs
Sp(u)p(v|u)d(u,v)u1v1
r
其中1p(v)p(u)p(v|u)u1
p(v)e)p{Sd(u,v)-}-}p(u)
为方便引入参数,uexp{4}那么有
p(u)
p(v|u)p(v)ueSd(u,v)
⑷
显然(4)提供rs个方程,
(2)提供r个方程,而
(1)提供1各方程,共rs+r+1个方程;而有rs个未知数p(v|u)、r个未知数u及未知数S,共rs+r+1未知数,显然可以求解.为方便起见,我们保存S作为参数.这样得到:
sSd(u,v),up(v)e1v1
⑸rSd(u,v),up(u)e1
(6)
E(d)
(S)p(u)p(v)ueSd(u,v)d(u,v)
u1v1
r
R((S))S(S)p(u)loguu1
(8)
很容易得到s变0,即S是率是失真函数的导数.当S-d
时,(S)min;参量S是的递增函数,当从min至max逐渐增大时,S将随增大而增大,当=max时,S到达最大值Smax<0.对Smax的求解较麻烦,必须解非线性方程.为了简单我们不求
Smaxo
如果r=s,即信源和信宿的符号集相同,那么很容易通过(6)式求
得u,进而通过(5)式求得p(v)o从而通过(7)(8)式划出率失真函数曲线.
2.R((S))的迭代计算
但一般情况下,rs,那么只能通过(6)先求得p(v),这是一个非常复杂的方程.下面介绍R((S))的迭代方法计算方法和公式.
首先假设p(v)固定,与信道传递概率p(v|u)无关,那么求极值得:
*,
p(v|u)
Sd(u,v)p(v)e
s
Sd(u,v)p(v)e
(9)
再假定p(v|u)不变,而把p(v)当成变量,那么求极值得:
*.
p(v)p(u)p(v|u)
u1
(10)
具体算法为:
选择绝对值相当大的负数SiO选定起始传递概率
p⑴(v|u)=1/rs.
通过(10)式求得P⑴(v),再通过(9)式求得p⑵(v|u).如此重复直到
rs
D(S)(n)p(u)p(n)(v|u)d(u,v)与D(S1)(n+1)相差较小;弁
u1v1
且.
rs,八p(n)(v|u)
R(G)(n)p(u)p(n)(v|u)logT〞与R(S1)(n+1)相差较小
u1v1p(v)
再选择较大的S2直到Smax逼近于零为止.这样就可以画出R()曲线.
七、实验代码
function[R,delta]=R_delta(Pu,D)
[r,s]=size(D);
eps=0.000001;
delta_min=0;
fori=1:
r
delta_min=delta_min+Pu(i)*min(D(i,:
));
enddelta_max=zeros(1,s);
forj=1:
s
fori=1:
r
delta_max(j)=delta_max(j)+Pu(i)*D(i,j);
end
end
delta_max=min(delta_max);
R=[];
delta=[];
P=ones(r,s);
P=P/s;
SS=100:
-0.1:
-100;
SS=-exp(SS);
forS=SS
Pv=Pu*P;
Ed0=sum(Pu*(P.*D));
Rs0=0;
foru=1:
r
forv=1:
s
ifP(u,v)〜=0&Pu(u)〜=0
Rs0=Rs0+
Pu(u)*P(u,v)*10g(P(u,v)/Pv(v));
end
end
end
P=exp(S*D);
fori=1:
s
P(:
i尸P(:
i)*Pv(i);
end
fori=1:
r
SumP=sum(P(i,:
));
P(i,:
)=P(i,:
)/SumP;
end
Km=50000;
fork=1:
Km
Pv=Pu*P;
Edn=sum(Pu*(P.*D));
Rsn=0;
foru=1:
r
forv=1:
s
ifP(u,v)〜=0&Pu(u)〜=0
Rsn=Rsn+
Pu(u)*P(u,v)*10g(P(u,v)/Pv(v));
end
end
end
P=exp(S*D);
fori=1:
s
P(:
i尸P(:
i)*Pv(i);
end
fori=1:
r
SumP=sum(P(i,:
));
P(i,:
)=P(i,:
)/SumP;
end
ifabs(Edn-Ed0) end Ed0=Edn; Rs0=Rsn; end ifk R=[R,Rsn]; delta=[delta,Edn]; end end functionh=Hp(p) ifp~=0&p~=1 h=-p*10g(p)-(1-p)*10g(1-p); else h=0; end matlab命令 clearall D=[0,1;2,0]; p=0.5; Pu=[p,1-p]; [R,delta]=R_delta(Pu,D); delta1=[0: p/1000: p]; R1=[]; fori=1: 1001 R1=[R1,log (2)-Hp(delta1(i)*2/3)]; end plot(delta,R,delta1,R1); 实验结果 国国曷 八、实验心得 通过本次信息与编码实验,了解了率失真函数的计算,收获很大,更深刻的了解了率失真函数,比书上了解的更加具体,使自己受益匪浅,增加了学习兴趣.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 失真 函数 计算