信息论与编码实验报告-率失真函数

合集下载

信息论与编码实验报告-率失真函数

信息论与编码实验报告-率失真函数

实验报告课程名称:信息论与编码姓名:系:专业:年级:学号:指导教师:职称:年月日实验五 率失真函数一、 实验目的验证率失真函数的极值特性,理解相关参数的变化对率失真函数的影响。

二、实验原理(1)输入S ,d 的初始值、条件概率、输出分布等值; (2)计算输出分布∑==Mi j i j pji pi q 1;(3)进入迭代,标志为0或者误差大于指定eps 则迭代,否则退出迭代; (4)计算一个互信息∑∑===Mi Mj jij ij i q pji pji pi pji qj I 11)log();(;(5)计算一个条件概率分布∑==Mk Sd k Sd j ikijeq eq i j P 1);(;(6)重算一次(4),并计算∑==M i ij ij i d pji pi D 1;(7)重算(3)-(7)步骤,直到退出迭代;三、实验环境Microsoft Windows 7、 Visual Studio 2005 profession四、编码程序#include <iostream>#include <math.h> #include <iomanip> using namespace std; //Define some global var const int M = 10; //M 元信源 const double S = -50; //迭代算法中的中间量,S 越小,允许最大失真度D 越小,当S 很小时(例如-100),R(D)=H(X) static int d[M][M]; //失真函数 static double q[M], Pji[M][M]; //输出分布和条件概率分布static double Pi[M] = {0.4, 0.1, 0.25, 0.1, 0.05, 0.05, 0.01, 0.02, 0.005, 0.015}; //初始化信源的概率分布 const int systemDefine = 2; //定义进制(默认为2进制,结果为bit ,为e 时,结果为nat )const double eps = 1e-8; //允许误差//计算输出分布(qj)void calcOutDistribution(){int i, j;for(j=0; j<M; j++){q[j]=0;for(i=0; i<M; i++){q[j] += Pi[i] * Pji[i][j];}}}//计算条件概率分布pjivoid calcProbabilityDistribution(){int i, j, k;double temp = 0;for(i=0; i<M; i++){temp = 0;for(k=0; k<M; k++){temp = temp + q[k] * exp(S*d[i][k]);}for(j=0; j<M; j++){//设定一个初始的条件概率分布Pji[i][j] = q[j] * exp(S*d[i][j])/temp;}}}//取得R(r,r)=I(qj;Pji)【实际上就是根据互信息量公式求互信息】double getSelfInformation(){int i, j;double I=0;for(i=0; i<M; i++)for(j=0; j<M; j++){I += Pi[i] * Pji[i][j] * log(Pji[i][j]/q[j])/log(systemDefine); //求互信息量}}return I;}int main(int argc, char *argv[]){double probabilityCount = 0.0; //概率和for(int k=0; k<M; k++){probabilityCount += Pi[k];}//和不为1,说明概率有错误if(fabs(probabilityCount-1.0) > eps){cout<<"概率和不为1,程序异常退出!"<<endl;return -1;}//前两个变量代表求的相邻的两个互信息R(r, r)和R(r, r+1);D代表限定失真double mutualInformation1, mutualInformation2, D;int i, j, flag, nCount;//初始值mutualInformation1 = 0;mutualInformation2 = 0;D = 0;flag = 0;nCount = 0; //迭代次数指示器//init mothod//输出分布的初始化for(i=0; i<M; i++){q[i] = 0;}//率失真函数的初始化,根据汉明失真距离来初始化for(i=0; i<M; i++){for(j=0; j<M; j++){if(i == j){d[i][j] = 0;}else{d[i][j] = 1;}}}for(i=0; i<M; i++){for(j=0; j<M; j++){//设定一个初始的条件概率分布Pji[i][j] = 1/(double)(M);}}//计算输出分布calcOutDistribution();//迭代算法cout<<"误差精度:"<<eps<<endl;while(flag == 0 || fabs(mutualInformation2-mutualInformation1) > eps){cout<<setprecision(20)<<endl<<"第"<<++nCount<<"次迭代"<<endl;flag = 1;//获得一个互信息R(r, r)mutualInformation1 = getSelfInformation();//计算下一个条件概率分布calcProbabilityDistribution();//在上面的原来的输出分布q和新生成的条件概率分布Pji的基础上获得新的互信息R(r, r+1)mutualInformation2 = getSelfInformation();//再计算条件概率分布calcOutDistribution();cout<<"互信息1:"<<mutualInformation1<<endl<<"互信息2:"<<mutualInformation2<<endl;for(i=0; i<M; i++){for(j=0; j<M; j++){//求最大允许失真度DD = D + Pi[i]*Pji[i][j]*d[i][j];}}cout<<"D = "<<D<<endl;cout<<"R(D) = "<<mutualInformation2<<endl; //这是利用迭代算法求出的最大允许失真度为D时的R(D)cout<<"------------================------------"<<endl;}return 0;}五、实验结果运行实验结果如下:六、实验总结通过这次实验,让我们更好的掌握了率失真的求解方法,而且通过计算机解决问题效率提高了很多,节省了很多繁琐的步骤,更加直观和方便的让我们了解到相关参数变化对率失真的影响。

信息论基础——限失真信源编码 率失真函数

信息论基础——限失真信源编码  率失真函数
0 1 4 D 1 0 1 4 1 0
上述例子说明了具体失真度的定义.一般情况下根据实际 信源的失真,可以定义不同的失真和误差的度量.另外还可 以按其他标准,如引起的损失、风险、主观感觉上的差别大 小等来定义失真度d(x,x^).
8
须强调: 假设X是信源,X^是信宿,那么两者
12
三、信息率失真函数的定义
1. 率失真函数问题产生?
对于信息容量为C的信道传输信息传输率为R的信源时, 如果R>C,就必须对信源压缩,使其压缩后信息传输率 R’小于信道容量C,但同时要保证压缩所引人的失真不 超过预先规定的限度——信息压缩问题就是对于给定的 信源,在满足平均失真
DD
的前提下,使信息率尽可能小。
14
由于平均互信息I(U;V)是P(x^ / x)的凹函数,所以极小值存 在.这个最小值就是在D¯ D的条件下,信源必须传输的最小 平均信息量.即:
R ( D)
ˆ P ( x / x ):D D
ˆ I ( X ; X ) min
R(D)-------信息率失真函数或简称率失真函数。 单位是奈特/信源符号
ˆ xi xi ˆ xi xi
0 ˆ d ( xi , xi ) 1
这种失真称为汉明失真.汉明失真矩阵_对角线上的元素为零, 即:
0 1 ... 1 1 0 ... 1 D : : ... : 1 1 ... 0 nn
0 1 D 1 0
3 、 R(D) 是 ( Dmin , Dmax ) 区间上的连续和严格单调递减函 数 由信息率失真函数的下凸性可知, R(D)在 ( Dmin , Dmax ) 上连续;又由R(D)函数的非增性且不为常数知, R(D)是区 间 ( Dmin , Dmax ) 上的严格单调递减函数。

信息率失真函数信息论

信息率失真函数信息论
计算各个失真函数的统计平均值(数学期望)。平均失真函数定义为:
d E [ d ( x i , y j )]

XY
P ( x i y j ) d ij

P ( x i ) P ( y j | x i ) d ij
XY
24
平均失真函数
d
若X和Y都是n维矢量消息的集合,也可以定义两个矢量消息之间的失
构成一个信道集合:


P

p
:
dD

yx
D
j| i
PD为假想信道,允许试验信道
31
信息率失真函数R(D)定义:
在给定信源消息的概率分布{P(xi)}及平均失真函数允许值D的条件
下,传输这些信源消息,并使失真程度在允许范围内时,所需要
的信息率的最小值,其定义式为:
R(D )
min
{ P ( y j | x i )} P D
失真最小就是最好吗?
定义失真的度量
9
本章讨论主要问题:
在允许一定失真存在的条件下,能够将信源
信息压缩到什么程度,即最少需要多少比特信息
才能够描述信源,如何能够快速的传输信息。
信息率失真理论的基本概念:
在允许传输消息出现一定的失真条件下,传
输该消息所需的信息率(最小值)将会比不允许失真
时小,并且允许的失真度越大,则信息率(最小值)
d02 = d10 =d12=d20=d21=2,d32=d40=d51=3。这些失真函数值的由
来可形象化地用正六角形表示,其中每条条边相当于失真函数值为1。
0
3
5
1
2
4
d00
d
10

信息率失真函数r(d)

信息率失真函数r(d)

信息率失真函数r(d)
信息率失真函数是信息论中对信源的提取率和失真之间关系的描述函数,用于量化信息传输过程中的信源失真。

信息传输中存在两个基本要素,即提取率和失真。

提取率指的是通过传输信道提取出的有效信息的比例,
而失真则是指提取出的信息与原始信息之间的差异。

信息率失真函数通常被用来评估压缩编码的性能。

在压缩编码中,为
了减小数据的传输量,我们会对数据进行压缩,并通过编码算法将其表示
为较短的二进制代码。

压缩过程中的失真表示为编码后恢复的数据与原始
数据之间的差异。

在设计压缩编码算法时,我们希望能够在提取率和失真之间达到一个
平衡。

提取率越高,我们能够从信道中提取出更多的有效信息;而失真越小,恢复的信息与原始信息的差距越小。

信息率失真函数可以帮助我们在
这两个方面之间进行权衡。

在信息论中,常用的信息率失真函数有均方误差函数和最大误差概率
函数。

均方误差函数衡量的是编码恢复的数据与原始数据之间的平方差的
期望,可以通过最小化均方误差来实现较低的失真。

而最大误差概率函数
则衡量的是编码恢复的数据与原始数据之间的最大差异的概率,可以通过
最小化最大误差概率来实现较低的失真。

总结来说,信息率失真函数是信息论中用于量化信源提取率和失真之
间关系的函数。

它可以帮助我们在设计压缩编码算法时找到提取率和失真
之间的平衡点,以达到较高的提取率和较低的失真。

陈运 信息论与编码 第四章 信息率失真函数

陈运 信息论与编码 第四章 信息率失真函数
失真度 (函数)
d (a1 , b1 ) d (a1 , b2 ) d (a , b ) d (a , b ) 2 1 2 2 [ D] ... ... d (an , b1 ) d (an , b2 )
... d (a1 , bm ) ... d (a2 , bm ) ... ... ... d (an , bm )
D p(ai ) p(b j / ai )d (ai , b j )
i 1 j 1 n m
D1 (1 ) D2 D (1 ) D D
' ''
满足保真 度准则
' ''
I ( X ; Y ) R( D) R[D (1 ) D ]
k 1 N
由信源和信道的无记忆性
p (ai ) p ( x jk )
k 1 N N
p (b j / ai ) p ( y jk / x jk )
k 1
D( N ) p(ai ) p(b j / ai )d (ai , b j )
i 1 j 1

nN mN
D1 D N
第1章:概述 第2章:信源熵 第3章:信道容量
第4章:信息率失真函数
第5章:信源编码 第6章:信道编码 第7章:密码体制的安全性测度
§4.1 信息率失真函数
§4.2 离散信源的信息率失真函数 §4.3 连续信息的率失真函数
§4.4 保真度准则下的信源编码定理
§4.1 信息率失真函数
§4.1.1 失真函数和平均失真度
n m
'
D 2 p(ai ) p 2 (b j / ai )d (ai , b j ) D

信息论实验二报告

信息论实验二报告

新课改下中学体育教学的问题与对策分析摘要:在当前的教育发展中,中学阶段的体育教学是不容忽视的重要内容,同时也是整个教育体系中的重要组成部分。

中学生的身体发展速度较快,在这一过程中对学生的身体素质进行培养是非常重要的。

从当前的中学体育教学情况来看,开展体育教学之后,能够有效的实现学生身体素质的培养和身体技能的提升。

关键词:新课改;中学体育;问题及对策引言:在当前新课改发展的背景下,老师需要正确的看待高中体育教学问题的开展,要结合学校相关领导人针对当前教学中存在的问题进行分析,要建立完善的科学评价体系和评价模式。

正凸显教学改革和发展的真实性与创新性。

一、中学体育教学的重要性国家相关体育教育部门在发展过程中多次强调中学生的身体训练问题,从国家体育教育部门的发展角度来看,开展中学生的体育教学工作之后,能够真正提高整体的教学质量和教学效果,而且能够为学生身体素质的提升起到一定的推动作用。

在当前的新课改发展背景下,老师的教育观念和具体的教学内容是非常重要的,体育老师在开展体育教学的过程中,能够真正遵循以德育人的教学原则了解学生的实际诉求,能够为后续的教育起到一定的推动力[1]。

了解学生素质发展和全面发展的基本内容,从根本上提高整体的教学效果。

开展高质量的体育教学工作之后,能够为学生综合能力的发展提供一定的技术保障。

从当前高中学生的情况来看,部分学生的身体素质相对较差,如果不及时对学生的身体机能进行培养,就会影响学生的身心健康发展。

学校通过开展高质量的体育教学活动之后,能够让学生在参与活动训练的过程中养成良好的习惯,这对学生的整体发展来说是非常有帮助的。

二、中学体育教学过程中存在的问题2.1.中学体育教学工作的重视度不足从当前高中学阶段的体育教学情况来看,部分学校在办学期间更加关注学生的应试发展,只关心学生的学科成绩,忽视了学生身体素质和体育课堂工作的开展。

但是由于部分学校对于体育教学缺乏一定的重视度,导致很多地区的体育教学工作开展非常困难。

信息论第四章失真率函数

【例4.8】 信源含两个消息{x1=0,x2=1},其概率分布为 失真测度 p为(XX汉)明 (x1Ha1mx2min,gδ)<失0.真5,测信度道,输求出率符失号真Y函=数{yR1=(D0,)。y2=1},
(1) 根据式(4-14)和(4-18)可求出R(D)的定义域 Dmin = 0·δ+0·(1-δ) = 0 D max = min {1-δ, δ}=δ (2) 求R(D)的值域
ij
式中D是预先给定的失真度,上式称为保真度准则。
根据[定理2.2],当信源q (x)一定时,平均互信息量I (X ; Y) 是信道转移概率函数p(y∣x)的∪型凸函数,这意味着可以 关于p(y∣x)对平均互信息量I (X ; Y)求得极小值,定义这个
极小值为率失真函数R(D),即:
RD min I X ;Y : D D p(y x)
xi )
( xi
y j )( y j )
q(xi )

1-δ = D (y1)+(1-D) (y2)
由上面方程组解出,
(
y1
)
D
1 2D
(
y
2
)
1
1
D 2D
② 再算出
p( y1
x1 )
(x1 y1 ) ( y1 )
q(x1 )
(1
D)
D 1 2 D
(1 D)( D) (1 2D)
d d 21 d 22
d1J
d
2
J
(4-1)
d I 1 d I 2 d I J
【例4.1】 汉明(Hamming)失真测度
信源输出符号X = {x1, x2, …, xK},信道输出符号Y = {y1, y2, …,

信息论 第6章(率失真函数及率失真编码定理)

信息论基础
The Basis of Information Theory
主题No6: 主题No6:率失真函数及率失真编码定理 No6


D
在第二章研究无失真信源编码问题时,我们知道 在信源无失真前提下,希望信息传输率 R = H(U) 尽可 N 能大,以提高传输效率。但由第八章将要介绍的信道 编码定理可知,只有在信息传输率小于信道容量时, 才可能实现无差错传递,而对每个信道而言,其信道 容量是一个定值,即信息传输率有一个极限值,这就 出现了矛盾。从提高传输效率的角度出发,考虑允许 传输有一定的失真,这在很多情况下是可以接受的。 这种情况下,可以对信源信息量进行压缩,那么可以 压缩到什么程度呢?下面要讨论的问题就是给定一个 失真度,求出在平均失真小于给定值的条件下,信源 所能压缩的最低程度,即率失真函数RD。
求率失真函数的几个例子
例3 信源U={0,1},信道V={0,e,1},信源等概率分布, 0 α 失真测度矩阵为: [dij ]= β α β,α < 1 0 2 (1)求R(D); (2)当 α ≥ 1 , β =1时,证明R(D)=log2-H(D) 2 β α, [解]由定义得:Dmin=0,Dmax=min{ },由于信源 2 及失真测度矩阵均具有对称性,故取信道转移概率为 0 α β ,此时计算I(U;V)=H(U)-H(U|V),即为 p(v | u) =

x, y
p( y x)q(x)log
p( y x)

x
p( y x)q(x)
即I(X;Y)是q(x)和p(y|x)的函数,下面两条定理阐明 了I(X;Y)与q(x)和p(y|x)之间的关系。 [定理1] 当信道p(y|x)给定,I(X;Y)是信源q(x)的∩ 型凸函数。 [定理2] 当信源q(x)给定,I(X;Y)则是信道p(y|x)的 ∪型凸函数。

信息论基础——信息率失真函数


1/ 2 1/ 4
1/ 1/
2 4
0 3/8
1/8 3 / 16
31//186
这儿不是矩阵乘法, 而是输入概率第一行分别乘以信道矩阵
第一行中的元素。第二行乘以第二行。
有了联合概率,求统计平均:
D 0 0 1/ 811/ 8 0.5 3 / 81 3 /16 0 3 /16 0.5 23/ 32
写法不同而已。
这时, 信息从0变成1,失真为0,即传输过程中不失真。
失真函数本身没有绝对意义,其选择必须与实际的物理内容相符合。 比如确定信息被传成了等概率分布,已经失真的什么信息量都没了, 但依然可以把失真矩阵元全部定义为0。但是这个定义与实际不符合, 没有任何价值。
失真函数的绝对大小也没有意义,一个失真函数直接乘2也可以作为失真 函数。失真量两倍了,但是对物理实际的描述程度却没有任何改变。
在合理定义的失真函数下,对同一个信道: 信道的信息传输率较大,则平均失真较小。 而信息传输率较小,平均失真较大。
在实际情况中:允许有一定失真,平均失真不能超过D, 那么这个时候信息传输率就有个与D最小值R m in , 如果R小于 R m in 则失真就会超过限制D。显然这个R m in 与信道矩阵有关。
信道矩阵: 00
1 0
0 1
,失真矩阵: 10
1 0
1 1
1 0 0
1 1 0
失真函数具有一定任意性,一个信源传输后,定义不同的失真函数 其失真量也不一样。
信道矩阵为
0 0
1 0
0 1
1 0 0
重新定义失真矩阵为: 11
0 1
1 0
0 1 1
这个定义与分别给出所有矩阵元,
一次用函数给出所有矩阵元,d (x, y) (x 1 y)一样。

信息论与编码实验报告

信息论与编码实验报告一、实验目的信息论与编码是一门涉及信息的度量、传输和处理的学科,通过实验,旨在深入理解信息论的基本概念和编码原理,掌握常见的编码方法及其性能评估,提高对信息处理和通信系统的分析与设计能力。

二、实验原理(一)信息论基础信息熵是信息论中用于度量信息量的重要概念。

对于一个离散随机变量 X,其概率分布为 P(X) ={p(x1), p(x2),, p(xn)},则信息熵H(X) 的定义为:H(X) =∑p(xi)log2(p(xi))。

(二)编码原理1、无失真信源编码:通过去除信源中的冗余信息,实现用尽可能少的比特数来表示信源符号,常见的方法有香农编码、哈夫曼编码等。

2、有噪信道编码:为了提高信息在有噪声信道中传输的可靠性,通过添加冗余信息进行纠错编码,如线性分组码、卷积码等。

三、实验内容及步骤(一)信息熵的计算1、生成一个离散信源,例如信源符号集为{A, B, C, D},对应的概率分布为{02, 03, 01, 04}。

2、根据信息熵的定义,使用编程语言计算该信源的信息熵。

(二)香农编码1、按照香农编码的步骤,首先计算信源符号的概率,并根据概率计算每个符号的编码长度。

2、确定编码值,生成香农编码表。

(三)哈夫曼编码1、构建哈夫曼树,根据信源符号的概率确定树的结构。

2、为每个信源符号分配编码,生成哈夫曼编码表。

(四)线性分组码1、选择一种线性分组码,如(7, 4)汉明码。

2、生成编码矩阵,对输入信息进行编码。

3、在接收端进行纠错译码。

四、实验结果与分析(一)信息熵计算结果对于上述生成的离散信源,计算得到的信息熵约为 184 比特/符号。

这表明该信源存在一定的不确定性,需要一定的信息量来准确描述。

(二)香农编码结果香农编码表如下:|信源符号|概率|编码长度|编码值|||||||A|02|232|00||B|03|174|10||C|01|332|110||D|04|132|111|香农编码的平均码长较长,编码效率相对较低。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告
课程名称:信息论与编码姓名:
系:
专业:
年级:
学号:
指导教师:
职称:
年月日
实验五 率失真函数
一、 实验目的
验证率失真函数的极值特性,理解相关参数的变化对率失真函数的影响。

二、实验原理
(1)输入S ,d 的初始值、条件概率、输出分布等值; (2)计算输出分布∑==M
i j i j pji pi q 1;
(3)进入迭代,标志为0或者误差大于指定eps 则迭代,否则退出迭代; (4)计算一个互信息∑∑===M
i M
j j
ij ij i q pji pji pi pji qj I 11)log(
);(;
(5)计算一个条件概率分布∑==
M
k Sd k Sd j ik
ij
e
q e
q i j P 1
);(;
(6)重算一次(4),并计算∑==M i ij ij i d pji pi D 1

(7)重算(3)-(7)步骤,直到退出迭代;
三、实验环境
Microsoft Windows 7、 Visual Studio 2005 profession
四、编码程序
#include <iostream>
#include <math.h> #include <iomanip> using namespace std; //Define some global var const int M = 10; //M 元信源 const double S = -50; //迭代算法中的中间量,S 越小,允许最大失真度D 越小,当S 很小时(例如-100),R(D)=H(X) static int d[M][M]; //失真函数 static double q[M], Pji[M][M]; //输出分布和条件概率分布
static double Pi[M] = {0.4, 0.1, 0.25, 0.1, 0.05, 0.05, 0.01, 0.02, 0.005, 0.015}; //初始化信源的概率分布 const int systemDefine = 2; //定义进制(默认为2进制,结果为bit ,为e 时,结果为nat )
const double eps = 1e-8; //允许误差
//计算输出分布(qj)
void calcOutDistribution()
{
int i, j;
for(j=0; j<M; j++)
{
q[j]=0;
for(i=0; i<M; i++)
{
q[j] += Pi[i] * Pji[i][j];
}
}
}
//计算条件概率分布pji
void calcProbabilityDistribution()
{
int i, j, k;
double temp = 0;
for(i=0; i<M; i++)
{
temp = 0;
for(k=0; k<M; k++)
{
temp = temp + q[k] * exp(S*d[i][k]);
}
for(j=0; j<M; j++)
{
//设定一个初始的条件概率分布
Pji[i][j] = q[j] * exp(S*d[i][j])/temp;
}
}
}
//取得R(r,r)=I(qj;Pji)【实际上就是根据互信息量公式求互信息】double getSelfInformation()
{
int i, j;
double I=0;
for(i=0; i<M; i++)
for(j=0; j<M; j++)
{
I += Pi[i] * Pji[i][j] * log(Pji[i][j]/q[j])/log(systemDefine); //求互信息量
}
}
return I;
}
int main(int argc, char *argv[])
{
double probabilityCount = 0.0; //概率和
for(int k=0; k<M; k++)
{
probabilityCount += Pi[k];
}
//和不为1,说明概率有错误
if(fabs(probabilityCount-1.0) > eps)
{
cout<<"概率和不为1,程序异常退出!"<<endl;
return -1;
}
//前两个变量代表求的相邻的两个互信息R(r, r)和R(r, r+1);D代表限定失真
double mutualInformation1, mutualInformation2, D;
int i, j, flag, nCount;
//初始值
mutualInformation1 = 0;
mutualInformation2 = 0;
D = 0;
flag = 0;
nCount = 0; //迭代次数指示器
//init mothod
//输出分布的初始化
for(i=0; i<M; i++)
{
q[i] = 0;
}
//率失真函数的初始化,根据汉明失真距离来初始化
for(i=0; i<M; i++)
{
for(j=0; j<M; j++)
{
if(i == j)
{
d[i][j] = 0;
}
else
{
d[i][j] = 1;
}
}
}
for(i=0; i<M; i++)
{
for(j=0; j<M; j++)
{
//设定一个初始的条件概率分布
Pji[i][j] = 1/(double)(M);
}
}
//计算输出分布
calcOutDistribution();
//迭代算法
cout<<"误差精度:"<<eps<<endl;
while(flag == 0 || fabs(mutualInformation2-mutualInformation1) > eps)
{
cout<<setprecision(20)<<endl<<"第"<<++nCount<<"次迭代"<<endl;
flag = 1;
//获得一个互信息R(r, r)
mutualInformation1 = getSelfInformation();
//计算下一个条件概率分布
calcProbabilityDistribution();
//在上面的原来的输出分布q和新生成的条件概率分布Pji的基础上获得新的互信息R(r, r+1)
mutualInformation2 = getSelfInformation();
//再计算条件概率分布
calcOutDistribution();
cout<<"互信息1:"<<mutualInformation1<<endl<<"互信息2:"<<mutualInformation2<<endl;
for(i=0; i<M; i++)
{
for(j=0; j<M; j++)
{
//求最大允许失真度D
D = D + Pi[i]*Pji[i][j]*d[i][j];
}
}
cout<<"D = "<<D<<endl;
cout<<"R(D) = "<<mutualInformation2<<endl; //这是利用迭代算法求出的最大允许失真度为D时的R(D)
cout<<"------------================------------"<<endl;
}
return 0;
}
五、实验结果
运行实验结果如下:
六、实验总结
通过这次实验,让我们更好的掌握了率失真的求解方法,而且通过计算机解决问题效率提高了很多,节省了很多繁琐的步骤,更加直观和方便的让我们了解到相关参数变化对率失真的影响。

相关文档
最新文档