信息论循环码报告概要

信息论循环码报告概要
信息论循环码报告概要

三级项目报告

课程名称:信息论与编码__________ 课程设计题目:循环码的编码和译码程序设计______

合作者

完成时间: 2012 年 5 月 18 日至 5 月 21 日

成绩:评阅人:

摘要

循环码是线性分组码中一个重要的子类,具有检错纠错能力强,实现方便等特点。它具有严密的代数学理论,封闭性与循环性。(n,k)循环码表示信息位为k位,监督位为(n-k)位。本次设计实验首先分析了(7,4)循环码的编码与译码原理,然后,用C语言实现其编码与译码功能。通过C语言平台运行所编写的程序,观察了在输入信息码情况下输出对应的编码结果以及相反的译码功能。通过多组的对比验证了该(7,4)循环码的编译码程序的正确性。最后,在程序运行的过程中进一步分析循环码的编译码原理,并通过比较仿真模型与理论计算的性能,证明了仿真模型的可行性。

关键词:循环码,编码与译码,C程序。

循环码的原理与特点

循环码是线性分组码的一种,所以它具有线性分组码的一般特性,此外还

具有循环性。循环码的编码和解码设备都不太复杂,且检(纠)错能力强。它不但可以检测随机的错误,还可以检错突发的错误。(n,k )循环码可以检测长为n-k 或更短的任何突发错误,包括首尾相接突发错误。

循环码是一种无权码,循环码编排的特点是相邻两个数码之间符合卡诺图中的邻接条件,即相邻两个数码之间只有一位码元不同,码元就是组成数码的单元。符合这个特点的有多种方案,但循环码只能是表中的那种。循环码的优点是没有瞬时错误,因为在数码变换过程中,在速度上会有快有慢,中间经过其它一些数码形式,称它们为瞬时错误。这在某些数字系统中是不允许的,为此希望相邻两个数码之间仅有一位码元不同,即满足邻接条件,这样就不会产生瞬时错误。循环码就是这样一种编码,它可以在卡诺图中依次循环得到。循环码又称格雷码( Grey Code )。

循环码最大的特点就是码字的循环特性,所谓循环特性是指:循环码中任一许用码组经过循环移位后,所得到的码组仍然是许用码组。若

)为一循环码组,则(

)、

)、……还是许用码组。也就是说,不论是左移还是右

移,也不论移多少位,仍然是许用的循环码组。

循环码编码原理

(1) 有信息码构成信息多项式m(x)= 1

k m -1

k x

-+……+0m 其中高幂次为

k-1; (2) 用n k

x

-乘以信息多项式m(x),得到的n k

x

- m(x)最高幂次为n-1,该

过程相当于把信息吗(1k m -,2k m -,……,1m ,0m )移位到了码字德前k 个信息位,其后是r 个全为零的监督位; (3) 用g(x)除n k

x

- m(x)得到余式r(x),其次数必小于g(x)的次数,即小

于(n-k ),将此r(x)加于信息位后做监督位,即将r(x)于n k

x m(x)

相加,得到的多项式必为一码多项式。

根据上面的讨论,可得到在(7,4)循环码编码的程序框图如图 1 所下图示:

图2 编码程序框图 循环码的译码原理

纠错码的译码是该编码能否得到实际应用的关键所在。译码器往往比编码

较难实现,对于纠错能力强的纠错码更复杂。根据不同的纠错或检错目的,循环码译码器可分为用于纠错目的和用于检错目的的循环码译码器。 通常,将接收到的循环码组进行除法运算,如果除尽,则说明正确传输;如果未除尽,则在寄存器中的内容就是错误图样,根据错误图样可以确定一种逻辑,来确定差错的位置,从而达到纠错的目的。用于纠错目的的循环码的译码算法比较复杂,感兴趣的话可以参考一些参考书。而用于检错目的循环码,一般使用ARQ 通信方式。检测过程也是将接受到的码组进行除法运算,如果除尽,则说明传输无误;如果未除尽,则表明传输出现差错,要求发送端重发。用于这种目的的循环码经常被成为循环冗余校验码,即CRC 校验码。CRC 校验码由于编码电路、检错电路简单且易于实现,因此得到广

r(x):

c(x):

泛的应用。在通过MODEM 传输文件的协议如ZMODEM 、XMODEM 协议中均用到了CRC 校验技术。在磁盘、光盘介质存储技术中也使用该方法。

在SystemView 中没有提供专用的CRC 循环冗余校验码编码器,读者可根据有关参考书设计一个相应的仿真电路。如果不想亲自动手设计,可以在CDMA 库(IS95)中找到一个现成的专用的CRC 编码器和译码器。该图符(FrameQ )是的接入信道的数据帧品质指示编码器,其中使用了多种不同比特率的数据模型,通过CRC 校验来判断接入信道的质量好坏。其中规定每一帧的长度为20ms 的数据。一个典型IS-95-A 标准规定的9600信道的CRC 测试码的长度为192比特,其中信息位172位、校验位12比特、尾部全零8比特。感兴趣的读者可以加入一个速率为860bps (192bit/0.2ms =860)的PN 数据,然后观察经过CRC 编码后的波形。并可用对应的译码器译码观察输出波形是否与输入的PN 码一致。

当码字c 通过噪声信道传送时,会受到干扰而产生错误。如果信道产生的错误图样是e ,译码器收到的n 重接受矢量是y,则表示为: y=c+e (13) 上式也可以写成多项式形式:y(x)=c(x)+e(x) (14) 译码器的任务就是从y(x)中得到()e x ∧

,然后求的估值码字

()c x ∧= y(x)+ ()e x ∧

(15)

并从中得到信息组()m x ∧

循环码译码可按以下三个步骤进行: (1)有接收到的y(x)计算伴随式s(x);

(2)根据伴随式s(x)找出对应的估值错误图样()e x ∧

(3)计算()c x ∧

= y(x)+ ()e x ∧

,得到估计码字()c x ∧

。若()c x ∧

=c(x),则

译码正确,否则,若()c x ∧

≠c(x),则译码错误。

由于g(x) 的次数为n - k 次,g(x) 除E(x) 后得余式(即伴随式)的最高次数为n-k-1次,故S(x) 共有2n-k 个可能的表达式,每一个表达式对应一个错误格式。可以知道(7,4)循环码的S(x) 共有2(7-4) = 8个可能的表达式,可根据错误图样表来纠正(7,4)循环码中的一位错误,其伴随式如表1所示。

表1 BCH(7,4)循环码错误图样表

上式指出了系统循环码的译码方法:将收到的码字R(x) 用g(x) 去除,如果除尽则无错;否则有错。如果有错,可由余式S(x) 一一找出对应图样,然后将错误图样E(x) 与R(x) 模2 和,即为所求码字C(x) ,从而实现纠错目的。

根据前面的讨论,可得(7,4)循环码译码的程序框图如图2 所示

图 2 译码程序框图

基于C 语言程序编写

就74循环码的编码与译码程序如附录所示:

运行及分析

运行结果理论分析

由循环码性质我们可以知道,对于(7,4)循环码来说,最小码距d 0=4,可以检测出3 位错误,纠正1 位错误,编码效率为4 7 ×100% = 57.1%。设传输信道的误码率为p ,据此设定信道模型存在如下关系:

传输正确概率为(1? p )n ,信息帧传输错误概率为Pe=1-(1-p) n ,每帧仅发生1 位错误的概率为P e =Cn 1p(1-p) n-1=np(1-p) n-1, 则1 位错误帧在总的错误帧中的概率为

表2 为其P e ,P e1,R 的模拟结果

表2 P e ,P e1,R 的模拟结果(n=7)

综合表2 的模拟结果和理论分析可知,通信系统的帧传输具有下列性质: (1) 在n 一定的条件下,信息帧错误概率随着比特误码率p 的增加而增加,最坏条件下帧错误 概率几乎为100%,此时系统失去通信能力。

(2) 在典型的通信环境下( p 为10-3 ~10-5 5,帧长n =128 ~ 1024,np <1 ) , 当p → 0 时,R →1,表明当比特误码率p 足够小的情况下,绝大多数信息帧错误是每帧1 位错误,因此纠正每帧1 位错误有实际应用价值。

1(1)1(

)100%100%1(1)E E P np p n R P p n

--=?=?--

程序运行结果

1.初始化界面

图3 2.正确编码界面

图4 3.正确译码界面

图5 4.信息位有一位错误时的译码界面

图6

5.信息位有二位错误时的译码界面

图7 6.信息位有三位错误时的译码界面

图8

RS码在现代通信系统中的应用

几乎所有的现代化通信系统都把纠错编码作为一个基本组成部分,RS码由于具有强有力的纠错功能,已经被NASA、ESA、CCSDS等空间组织接受,用于空间信道纠错。RS 循环码在车载无线通信、M元扩频通信系统中的应用以及QAM系统等方面都有很广泛的应用,可以说它已经成为无线通信系统中不可或缺的一部分。

实验过程遇到的问题及解决方法

本次实验让我感觉非常棘手,一方面的原因是自己对信道编码的不熟悉,之前做的实验都是对信源进行编码,现在是对信道进行编码;另一方面是书本对于此部分的介绍内容相对较少,要自己在网上找资料学习,网上知识点太泛滥而且很多都是太学术化,不容易理解,因此要自己编程那是难上加难。此次实验的C程序我也是参考网上其中的一份并在其基础上根据自己的需要加上了自己的部分代码,网上对于这方面的资源真的蛮少,也许是自己找的还不够彻底吧,总的来说,这次实验收获不多,对于这方面还没掌握,我会继续努力。

参考文献

[1]潘新民主编.《计算机通信技术》 (第2版).北京.电子工业出版社.2006

[2]孙丽华谢仲华陈荣伶编《信息论与纠错编码》.北京.电子工业出版

社.2005

[3]樊昌信著.《通信原理》[M].国防工业出版社.1999.10

[4]宋祖顺著。《现代通信原理》[M].电子工业出版社.2001.2

[5]黄新亚米央编著《信息编码技术及其应运大全》[M] 电子工业出版社

1994.8

附录

/*(7,4)循环码的编译及纠检错实现*/

#include

#include

#include

/*函数声明*/

void Begin();

void Code();

void Decoding();

/*主函数*/

main()

{

printf("\nThis software main function is carries on the code and the decoding to (7,3) cyclic code.\n ");

Begin();

}

/*进行编码*/

void Code()

{

int Input[4];

int Output[7];

int reg[3]={0,0,0};

int temp,i,j,t;

printf("Please input the information code :");

for(i=0;i<4;i++)

scanf(" %d",&Input[i]); /*输入4位信息码*/

for(i=0;i<4;i++) /*进行除法操作*/

{temp=reg[2]+Input[i]; /*生成多项式为g(x)=x^3+x^2+1*/ if(temp==2) temp=0;

reg[2]=reg[1]+temp;

if(reg[2]==2)reg[2]=0;

reg[1]=reg[0];

reg[0]=temp;

}

for(i=0;i<4;i++) Output[i]=Input[i];

/*进行编码操作*/

for(i=4;i<7;i++)

{

temp=reg[2];

for(j=2;j>0;j--)

reg[j]=reg[j-1];

reg[0]=0;

Output[i]=temp;

}

printf("________________________________________");

printf("\n");

printf(" The information code output is: \n");

for(i=0;i<7;i++)

printf( " %d ",Output[i]); /*输出编码结果*/ printf("\n");

printf("________________________________________");

printf("\n");

Begin();

}

/*译码并进行纠检错*/

void Decoding()

{ int Input[7],Output[7];

int reg[3]={0,0,0};

int temp,i,d,x,p;

printf("\ninput the information code of bit7:");

for(i=0;i<7;i++)

scanf(" %d",&Input[i]); /*输入接受码组*/

for(i=0;i<7;i++) /*进入除法电路*/

{temp=reg[2]; /*计算伴随式S(x)*/

reg[2]=reg[1]+temp;

if(reg[2]==2)reg[2]=0;

reg[1]=reg[0];

reg[0]=temp+Input[i];

if(reg[0]==2)reg[0]=0;

}

p=reg[2]+2*reg[1]+4*reg[0];

if(p!=1&&p!=2&&p!=3&&p!=7&&p!=8&&p!=13&&p!=14&&p!=0)

{ /*输入错误位数大于2位*/

printf(" \"The error >=2\" \n");

getchar();

exit(0);

}

printf("___________________________________________\n");

printf("s(x)=");

for(i=2;i>=0;i--)

printf(" %d",reg[i]);

printf("\n");

for(i=0;i<7;i++) /*纠正一位错误*/

{d=reg[2]*reg[1]*(!reg[0]);

Output[i]=d+Input[i];

if(Output[i]==2) Output[i]=0;

temp=reg[2];

x=0; /*S(x)进行自发运算以求得错误位数*/

reg[2]=temp+reg[1];

if(reg[2]==2)reg[2]=0;

reg[1]=reg[0];

reg[0]=temp+x;

} /*输出4位信息源*/

printf("The decoding bit4 is:");

for(i=0;i<4;i++)

printf(" %d ",Output[i]);

printf("\n");

printf("The Decoding bit7 is:"); /*输出7位译码结果*/ for(i=0;i<7;i++)

printf(" %d ",Output[i]);

printf("\n");

printf("___________________________________________\n");

Begin();

}

/*选择操作*/

void Begin()

{

fflush(stdin);

char ch;

printf(" -----------------------------------------------------------------");

printf("\n");

printf(" -- input 'c' to carry on the code --"); printf("\n");

printf(" -- input 'd' to carry on the decoding code --"); printf("\n");

printf(" -- input 'e' to exit please to --"); printf("\n");

printf(" ----------------------------------------------------

-------------");

printf("\n");

ch=getchar();

if(ch=='c') Code();

else if(ch=='d') Decoding();

else if(ch=='\n') Begin();

else if(ch=='e') exit(0);

else {printf("\"input error\"\n"); fflush(stdin);Begin();} /*输入错误提示*/

}

信息论与编码课程报告

Turbo码编码与译码方法 一、前言: Turbo码自1993年被提出以来,就以其优异的纠错性能而备受关注,并被主要通信标准所采纳。Turbo码是用短码构造等效意义的长码,以达到长码 的纠错性能而减少解码复杂度。在强噪声低洗澡比的条件下,如E b/N0=0.7dB, 采用编码效率R=1/2的Turbo码,经过18次迭代解码后,仍然具有极低的误 码率。Turbo码得这一特性对于强噪声环境下数字通信与数字信号传输具有重 要的应用价值。Turbo码的发现,标志着信道编码理论与技术的研究进入了一 个崭新的阶段,对现代编码理论的发展起着重要的作用。 二、Turbo码的编码原理: Turbo码编码器由两个递归系统卷积吗编码器(RSC1和RSC2)通过一个交织器并行级联而成,编码后经过删除或复用,产生不同码率的码字,进入传输 信道。Turbo码编码器结构框图如图1所示,信息序列d={d1,d2,…d N}经过N 位交织器,形成一个新序列 d‘={d1’,d2’,…,d N’}(长度与内容没变,但比特位置经过重新排列)。d和d‘分 别传送到两个分量码编码器(RSC1和RSC2)。一般情况下,这两个分量码编 码器结构相同,生成序列X1p和X2p。为了提高误码率,序列X1p和X2p需要经过 删除器,采用删除技术从这两个校验序列中周期地删除一些校验位,形成校验 位序列X P与编码序列u(为方便表述,也用X S表示)经过复用,生成Turbo 码序列。例如,假如图中两个分量编码器的码率均是1/2,为了得到1/2码率 的Turbo码,可以采用这样的删除矩阵:P=[10,01],即删除来自RSC1的校验 序列X1p的偶数位置比特,与来自RSC2的校验序列X2p的奇数位置比特。 S X 图1 交织器在Turbo码中起关键作用。表面上看,它仅仅是将信息序列中的N个比特的位置进行随机置换,实际上,它很大程度上影响了Turbo码的性能。通过随机交织,使得编码序列在长为2N和3N(不使用删除)比特的范围内具有记忆性,从而有简单的短码得到近似长码。当交织器充分大时,Turbo码就具有近似于随机长码的特性。 三、Turbo码的译码原理:

基于MATLAB的循环码实验报告

课程名称:信息论与编码 课程设计题目:循环码的编码和译码程序设计指导教师: 系别:专业: 学号:姓名: 合作者 完成时间: 成绩:评阅人:

一、实验目的: 1、通过实验了解循环码的工作原理。 2、深刻理解RS 码构造、RS 编译码等相关概念和算法。 二、实验原理 1、RS 循环码编译码原理与特点 设C 使某 线性分组码的码字集合,如果对任C c c c C n n ∈=--),,,(021 ,它的循环 移位),,,(1032)1(---=n n n c c c c C 也属于C ,则称该 码为循环码。 该码在结构上有另外的限制,即一个码字任意循环移位的结果仍是一个有效码字。其特点是:(1)可以用反馈移位寄存器很容易实现编码和伴随式的计算;(2)由于循环码有很多固有的代数结构,从而可以找到各种简单使用的译码办法。 如果一个 线性码具有以下的属性,则称为循环码:如果n 元组 },,,{110-=n c c c c 是子空间S 的一个码字,则经过循环移位得到的},,,{201)1(--=n n c c c c 也 同样是S 中的一个码字;或者,一般来说,经过j 次循环移位后得到的 },,,,,,,{11011)(---+--=j n n j n j n j c c c c c c c 也是S 中的一个码字。 RS 码的编码系统是建立在比特组基础上的,即字节,而不是单个的0和1,因此它是非二进制BCH 码,这使得它处理突发错误的能力特别强。 码长:12-=m n 信息段:t n k 2-= (t 为纠错符号数) 监督段:k n t -=2 最小码段:12+=t d 最小距离为d 的本原RS 码的生成多项式为:g(x)=(x-α)(x -α2)(x -α3)…(x -αd -2) 信息元多项式为::m(x)=m0+m1x+m2x2+…+mk -1xk-1 循环码特点有: 1)循环码是线性分组码的一种,所以它具有线性分组的码的一般特性,且具有循环性,纠错能力强。 2)循环码是一种无权码,循环码编排的特点为相邻的两个数码之间符合卡诺中的邻接条件,即相邻数码间只有一位码元不同,因此它具有一个很好的优点是它满足邻接条件,没有瞬时错误(在数码变换过程中,在速度上会有快有慢,中间经过其他一些数码形式,即为瞬时错误)。 3)码字的循环特性,循环码中任一许用码经过牡环移位后,所得到的码组仍然是许用码组。

信息论与编码实验报告.

本科生实验报告 实验课程信息论与编码 学院名称信息科学与技术学院 专业名称通信工程 学生姓名 学生学号 指导教师谢振东 实验地点6C601 实验成绩 二〇一五年十一月二〇一五年十一月

实验一:香农(Shannon )编码 一、实验目的 掌握通过计算机实现香农编码的方法。 二、实验要求 对于给定的信源的概率分布,按照香农编码的方法进行计算机实现。 三、实验基本原理 给定某个信源符号的概率分布,通过以下的步骤进行香农编码 1、将信源消息符号按其出现的概率大小排列 )()()(21n x p x p x p ≥≥≥ 2、确定满足下列不等式的整数码长K i ; 1)(l o g )(l o g 22+-<≤-i i i x p K x p 3、为了编成唯一可译码,计算第i 个消息的累加概率 ∑ -== 1 1 )(i k k i x p p 4、将累加概率P i 变换成二进制数。 5、取P i 二进制数的小数点后K i 位即为该消息符号的二进制码。 四、源程序: #include #include #include #include #include using namespace std; int main() { int N; cout<<"请输入信源符号个数:";cin>>N; cout<<"请输入各符号的概率:"<

int i,j; for(i=0;i

信息论实验报告-

信息论实验报告 学生: 班级: 学号:

实验一香农编码一、程序设计的流程图 二、程序清单 #include

#include #include using namespace std; void swap(double *x,double *y); int main() { int N; cout<<"输入信源个数"<>N; double S[N]; //注意变量在数组中的影响cout<<"输入信源概率"<>S[i]; for(int i=0;i1) { MM[i]+='1';

aa=tem-1; } else { MM[i]+='0'; aa=tem; } } } string BB[N]; for(int i=0;i

信息论实验报告2

实验课程:信息论与编码理论专业:信息与计算科学班级:09070241 学号:0907024101 姓名:孙秋月 中北大学理学院

实验二 哈夫曼编码 一、实验目的 1. 掌握哈夫曼编码的原理及编码步骤 2. 练习matlab 中哈夫曼编码函数的调用及通信工具箱的使用 二、实验原理 哈夫曼编码的具体步骤归纳如下: 1. 统计n 个信源消息符号,得到n 个不同概率的信息符号。 2. 将这n 个信源信息符号按其概率大小依次排序: p (x 1) ≥ p (x 2)≥ …≥ p (x n ) 3. 取两个概率最小的信息符号分别配以0和1两个码元,并将这两个概率相加作为一个新的信息符号的概率,和未分配的信息符号构成新的信息符号序列。 4. 将剩余的信息符号,按概率大小重新进行排序。 5. 重复步骤3,将排序后的最后两个小概论相加,相加和与其他概率再排序。 6. 如此反复重复n-2次,最后只剩下两个概率。 7. 从最后一级开始,向前返回得到各个信源符号所对应的码元序列,即相应的码字,构成霍夫曼编码字。编码结束。 三、实验内容 为某一信源进行哈夫曼编码。该信源的字符集为X={x 1, x 2, … x 6 },相应的概率矢量为:P =(0.30,0.25,0.21,0.10,0.09,0.05),即X ,P 的概率空间为: 123456 0.300.250.210.100.090.05X x x x x x x P ????=???????? 根据哈夫曼编码算法对该信源进行哈夫曼编码。并计算其平均码长和编码效率。 调用matlab 哈夫曼编码函数进行哈夫曼编码,与人工编码结果做比较。 1. huffmandict 函数: 为已知概率分布的信源模型生成哈夫曼编解码索引表。

信息论与编码实验报告材料

实验报告 课程名称:信息论与编码姓名: 系:专 业:年 级:学 号:指导教 师:职 称:

年月日 目录 实验一信源熵值的计算 (1) 实验二Huffman 信源编码. (5) 实验三Shannon 编码 (9) 实验四信道容量的迭代算法 (12) 实验五率失真函数 (15) 实验六差错控制方法 (20) 实验七汉明编码 (22)

实验一信源熵值的计算 、实验目的 1 进一步熟悉信源熵值的计算 2 熟悉Matlab 编程 、实验原理 熵(平均自信息)的计算公式 q q 1 H(x) p i log2 p i log2 p i i 1 p i i 1 MATLAB实现:HX sum( x.* log2( x));或者h h x(i)* log 2 (x(i )) 流程:第一步:打开一个名为“ nan311”的TXT文档,读入一篇英文文章存入一个数组temp,为了程序准确性将所读内容转存到另一个数组S,计算该数组中每个字母与空格的出现次数( 遇到小写字母都将其转化为大写字母进行计数) ,每出现一次该字符的计数器+1;第二步:计算信源总大小计算出每个字母和空格出现的概率;最后,通过统计数据和信息熵公式计算出所求信源熵值(本程序中单位为奈特nat )。 程序流程图: 三、实验内容 1、写出计算自信息量的Matlab 程序 2、已知:信源符号为英文字母(不区分大小写)和空格输入:一篇英文的信源文档。输出:给出该信源文档的中各个字母与空格的概率分布,以及该信源的熵。 四、实验环境 Microsoft Windows 7

五、编码程序 #include"stdio.h" #include #include #define N 1000 int main(void) { char s[N]; int i,n=0; float num[27]={0}; double result=0,p[27]={0}; FILE *f; char *temp=new char[485]; f=fopen("nan311.txt","r"); while (!feof(f)) { fread(temp,1, 486, f);} fclose(f); s[0]=*temp; for(i=0;i='a'&&s[i]<='z') num[s[i]-97]++; else if(s[i]>='A'&&s[i]<='Z') num[s[i]-65]++; } printf(" 文档中各个字母出现的频率:\n"); for(i=0;i<26;i++) { p[i]=num[i]/strlen(s); printf("%3c:%f\t",i+65,p[i]); n++; if(n==3) { printf("\n"); n=0; } } p[26]=num[26]/strlen(s); printf(" 空格:%f\t",p[26]);

信息论课程设计报告

成绩: 2016-2017学年第1学期 《信息论》课程设计 学院名称: 班级学号: 学生姓名: 教师姓名: 2016年12月 一、判定唯一可译码 1. 任务说明

输入:任意的一个码(即已知码字个数及每个具体的码字) 输出:判决结果(是/不是) 输入文件:in1.txt ,含至少2组码,每组的结尾为”$”符 输出文件:out1.txt ,对每组码的判断结果 说明:为了简化设计,可以假定码字为0,1串 2. 实现原理 判断方法:将码C 中所有码字可能的尾随后缀组成一个集合F ,当且仅当集合F 中没有 包含任一码字,则可判断此码C 为唯一可译变长码。 构成集合F :首先观察码C 中最短的码字是否是其他码字的前缀。若是,将其所有可能 的尾随后缀排列出。就是将其他码字序列中截去与其最短码字相同的前缀 部分,将余下的序列为尾随后缀。而这些尾随后缀又可能是某些码字的前 缀,或者最短码字又仍是这些尾随后缀的前缀,再将由这些尾随后缀产生 的新的尾随后缀列出。然后再观察这些新的尾随后缀是否是某些码字的前 缀,或观察有否其他码字是这些新的尾随后缀的前缀,再将产生的尾随后 缀列出,依次下去,直至没有一个尾随后缀是码字的前缀或没有新的尾随 后缀产生为止。这样,首先获得的是由最短码字能引起的所有尾随后缀。 接着,按照上述步骤将次短的码字、......所有码字可能产生的尾随后缀前部 列出。由此得到由码C 的所有可能的尾随后缀组成的集合F 。 参考算法伪代码: For all ,i j W W C ∈ do if i W 是j W 的前缀 then 将相应的后缀作为一个尾随后缀放入集合0F 中 End if End for Loop For all i W C ∈ do For all j n W F ∈ do if i W 是j W 的前缀 then 将相应的后缀作为一个尾随后缀放入集合1n F +中 Else if j W 是i W 的前缀 then 将相应的后缀作为一个尾随后缀放入集合1n F +中 End if End for End for i i F F ← If ,i i W F W C ?∈∈ then Return false Else if F 中未出现新的元素 then Return true End if //能走到这里,说明F 中有新的元素出现,需继续 End loop

《信息论与信源编码》实验报告

《信息论与信源编码》实验报告 1、实验目的 (1) 理解信源编码的基本原理; (2) 熟练掌握Huffman编码的方法; (3) 理解无失真信源编码和限失真编码方法在实际图像信源编码应用中的差异。 2、实验设备与软件 (1) PC计算机系统 (2) VC++6.0语言编程环境 (3) 基于VC++6.0的图像处理实验基本程序框架imageprocessing_S (4) 常用图像浏览编辑软件Acdsee和数据压缩软件winrar。 (5) 实验所需要的bmp格式图像(灰度图象若干幅) 3、实验内容与步骤 (1) 针对“图像1.bmp”、“图像2.bmp”和“图像3.bmp”进行灰度频率统计(即计算图像灰度直方图),在此基础上添加函数代码构造Huffman码表,针对图像数据进行Huffman编码,观察和分析不同图像信源的编码效率和压缩比。 (2) 利用图像处理软件Acdsee将“图像1.bmp”、“图像2.bmp”和“图像 3.bmp”转换为质量因子为10、50、90的JPG格式图像(共生成9幅JPG图像),比较图像格式转换前后数据量的差异,比较不同品质因素对图像质量的影响; (3) 数据压缩软件winrar将“图像1.bmp”、“图像2.bmp”和“图像3.bmp”分别生成压缩包文件,观察和分析压缩前后数据量的差异; (4) 针对任意一幅图像,比较原始BMP图像数据量、Huffman编码后的数据量(不含码表)、品质因素分别为10、50、90时的JPG文件数据量和rar压缩包的数据量,分析不同编码方案下图像数据量变化的原因。 4、实验结果及分析 (1)在VC环境下,添加代码构造Huffman编码表,对比试验结果如下: a.图像1.bmp:

信息论应用调研报告

信息论基础调研报告 一.信息论的起源: 信息论理论基础的建立,一般来说开始于1948年美国数学家香农在《贝尔系统电话杂志》发表题为“通信的数学理论”的长篇论文。这篇论文以概率论为工具,深刻阐释了通信工程的一系列基本理论问题,给出了计算信源信息量和信道容量的方法和一般公式,得出了一组表征信息传递重要关系的编码定理,从而创立了信息论。 信息论自诞生到现在不过60多年,在人类科学史上是相当短暂的。但它的发展对学术界以及人类社会的影响是相当广泛和深刻的。信息作为一种资源,如何开发、利用、共享,是人们普遍关心的问题。 信息论是研究信息的传输、存储和处理的学科,亦称“信息论”为“通信的数学理论”。它主要研究在通信系统设计中如何实现信息传输的有效性和可靠性。 因此,信息论与通信技术、统计数学信号处理等密切相关。 二.信息技术的发展: 现代信息论其实是从上世纪二十年代奈奎斯特和哈特莱的研究开始的,他们最早开始研究了通信系统传输信息的能力,并且试图度量系统的信道容量。 香农于1940年在普林斯顿高级研究所期间开始思考信息论与有效通信系统的问题。经过8年的努力,1948年,来自贝尔研究所的Claude Shannon(克劳德·香农)的《通信的数学理论》论文公诸于世,从此宣告了崭新的一门关于信息发面的学科──信息论的诞生。1949年,香农又在该杂志上发表了另一著名论文《噪声下的通信》。在这两篇论文中,香农阐明了通信的基本问题,给出了通信系统的模型,提出了信息量的数学表达式,并解决了信道容量、信源统计特性、信源编码、信道编码等一系列基本技术问题。两篇论文成为了信息论的奠基性著作。这两篇论文一起阐述了现代信息论的基础。并且香农开始创造性的定义了“信息”。 信息论自从二十世纪四十年代中叶到二十一世纪初期,现已成为一门独立的理论科学,他给出一切传输、存储、处理信息系统的一般理论,并指出,实现有效、可靠地传输和存储信息的途径是走数字化的道路。这是通信技术领域数字化革命的数学或理论基础。1946年的计算机和1947年晶体管的诞生和相应技术的发展,是这一革命的物理或物质基础。信息论是在长期的通信工程实践和理论研究的基础上发展起来的。 20世纪50年代,包括香农在内的一些科学家做了大量的工作,发表了许多重要文章,将香农的科学论断进一步推广,同时信道编码理论有了较大的发展。20世纪60年代,信道编码技术已经成为信息论的又一重要分支。它把代数方法引入到纠错码的研究,使分组码技术达到了高峰,找到了可纠正多个错误的码,并提出了可实现的译码方法。其次是卷积码和概率译码有了重大突破,提出了序列译码和维特比译码方法。 1961年,香农的重要论文“双路通信信道”开拓了多用户信息理论的研究。到70年代,由于数字计算机的广泛应用,通讯系统的能力也有很大提高,如何

信息论与编码实验报告

实验一 绘制二进熵函数曲线(2个学时) 一、实验目的: 1. 掌握Excel 的数据填充、公式运算和图表制作 2. 掌握Matlab 绘图函数 3. 掌握、理解熵函数表达式及其性质 二、实验要求: 1. 提前预习实验,认真阅读实验原理以及相应的参考书。 2. 在实验报告中给出二进制熵函数曲线图 三、实验原理: 1. Excel 的图表功能 2. 信源熵的概念及性质 ()()[] ()[]())(1)(1 .log )( .) ( 1log 1log ) (log )()(10 , 110)(21Q H P H Q P H b n X H a p H p p p p x p x p X H p p p x x X P X i i i λλλλ-+≥-+≤=--+-=-=≤≤? ?????-===??????∑ 单位为 比特/符号 或 比特/符号序列。 当某一符号xi 的概率p(xi)为零时,p(xi)log p(xi) 在熵公式中无意义,为此规定这时的 p(xi)log p(xi) 也为零。当信源X 中只含有一个符号x 时,必有p(x)=1,此时信源熵H (X )为零。 四、实验内容: 用Excel 和Matlab 软件制作二进熵函数曲线。根据曲线说明信源熵的物理意义。 (一) Excel 具体步骤如下: 1、启动Excel 应用程序。 2、准备一组数据p 。在Excel 的一个工作表的A 列(或其它列)输入一组p ,取步长为0.01,从0至100产生101个p (利用Excel 填充功能)。

3、取定对数底c,在B列计算H(x) ,注意对p=0与p=1两处,在B列对应位置直接输入0。Excel中提供了三种对数函数LN(x),LOG10(x)和LOG(x,c),其中LN(x)是求自然对数,LOG10(x)是求以10为底的对数,LOG(x,c)表示求对数。选用c=2,则应用函数LOG(x,2)。 在单元格B2中输入公式:=-A2*LOG(A2,2)-(1-A2)*LOG(1-A2,2) 双击B2的填充柄,即可完成H(p)的计算。 4、使用Excel的图表向导,图表类型选“XY散点图”,子图表类型选“无数据点平滑散点图”,数据区域用计算出的H(p)数据所在列范围,即$B$1:$B$101。在“系列”中输入X值(即p值)范围,即$A$1:$A$101。在X轴输入标题概率,在Y轴输入标题信源熵。 (二)用matlab软件绘制二源信源熵函数曲线 p = 0.0001:0.0001:0.9999; h = -p.*log2(p)-(1-p).*log2(1-p); plot(p,h) 五、实验结果

信息论与编码实验报告

信息论与编码实验报告-标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

实验一关于硬币称重问题的探讨 一、问题描述: 假设有N 个硬币,这N 个硬币中或许存在一个特殊的硬币,这个硬币或轻 或重,而且在外观上和其他的硬币没什么区别。现在有一个标准天平,但是无刻度。现在要找出这个硬币,并且知道它到底是比真的硬币重还是轻,或者所有硬币都是真的。请问: 1)至少要称多少次才能达到目的; 2)如果N=12,是否能在3 次之内将特殊的硬币找到;如果可以,要怎么称? 二、问题分析: 对于这个命题,有几处需要注意的地方: 1)特殊的硬币可能存在,但也可能不存在,即使存在,其或轻或重未知; 2)在目的上,不光要找到这只硬币,还要确定它是重还是轻; 3)天平没有刻度,不能记录每次的读数,只能判断是左边重还是右边重,亦或者是两边平衡; 4)最多只能称3 次。 三、解决方案: 1.关于可行性的分析 在这里,我们把称量的过程看成一种信息的获取过程。对于N 个硬币,他们 可能的情况为2N+1 种,即重(N 种),轻(N 种)或者无假币(1 种)。由于 这2N+1 种情况是等概率的,这个事件的不确定度为: Y=Log(2N+1) 对于称量的过程,其实也是信息的获取过程,一是不确定度逐步消除的过程。 每一次称量只有3 种情况:左边重,右边重,平衡。这3 种情况也是等概率 的,所以他所提供的信息量为: y=Log3 在K 次测量中,要将事件的不确定度完全消除,所以 K= Log(2N+1)/ Log3 根据上式,当N=12 时,K= 2.92< 3 所以13 只硬币是可以在3 次称量中达到

信息论报告

联合信源各种熵的计算 一、摘要: 在人类社会中,人与人之间要经常互通情报,交换消息,从一般意义上讲这就是通信。因此传递信息就是通信的根本目的。信源需要传递的事情一般是属于随机事件,也就是其状态是随机的。源熵是信息论中用来衡量信源信息量有序化程度的一个概念。信源熵值与信源有序化程度成反比;有序度越高,信源熵值越低,反之亦成立。信源各个离散消息的自信息量的数学期望(即概率加权的统计平均值)。本文主要研究了联合信源的各种伤的计算。 关键词: 条件熵 非条件熵 共熵 联合信源 二、问题分析: 由这两个信源构成了联合信源的各种概率空间: 联合概率空间——{,()}i j XY p x y 条件概率空间——{/,(/)}j i Y X p y x ,{/,(/)}i j X Y p x y 以下分别对二元联合信源的共熵,条件熵,非条件熵和最大熵进行求解。 1、二元联合信源的共熵:

共熵反映的是每当两个信源同时发送一对消息时,所提供的平均信息量。 二元联合信源的共熵(或联合熵)的定义: ,,1 ()()log ()log ()()i j i j i j i j i j i j H XY p x y p x y p x y p x y ==-∑∑ 2、二元联合信源的条件熵: (1).X 给定的情况下Y 的条件熵: ,,1(/)()log ()log (/)(/) i j i j j i i j i j j i H Y X p x y p x y p y x p y x ==-∑∑ 条件熵H(X/Y)所反映的是信源X 给定的条件下,信源Y 所提供的平均信息量。 (2).Y 给定的情况下X 的条件熵: ,,1 (/)()log ()log (/)(/)i j i j i j i j i j i j H X Y p x y p x y p x y p x y ==-∑∑ 条件熵H(Y/X)所反映的是信源Y 给定的条件下,信源X 所提供的平均信息量。 3、最大熵: 当X,Y 相互独立时,()()()()MAX H XY H X H Y H XY =+-- 三。、程序代码: %---------输入先验概率 转移矩阵 fprintf('\n 请输入先验概率P_x 和状态转移概率P_y_x\n'); eps=1e-8; P_x=input('P_x=')+eps; %+eps 是为了防止概率为0使,对数无意义 P_y_x=input('P_y_x=')+eps; if (min(P_x(:))<0 | max(P_x(:)>1))|(min(P_y_x(:))<0|max(P_x(:)>1)) error('The data shoud be any numbers between 0 and 1.'); end ; eps=1e-10; if min(sum(P_y_x')-1)

信息论霍夫曼编码

信息论与编码实验报告 课程名称:信息论与编码 实验名称:霍夫曼编码 班级: 学号: 姓名:

实验目的 1、熟练掌握Huffman编码的原理及过程,并熟练运用; 2、熟练运用MATLAB应用软件,并实现Huffman编码过程。 一、实验设备 装有MATLAB应用软件的PC计算机。 二、实验原理及过程 原理: 1、将信源符号按概率从大到小的排列,令P (X1)>=P(X2)>=P(X3)......P(Xn) 2、给两个概率最小的信源符号P(Xn-1)和P(Xn)各分配一个码位“0”和“1”,将这两个信源符号合并成一个新符号,并用这两个最小的概率之和作为新符号的概率,结果得到一个只包含(n-1)个信源符号的新信源。称为信源的第一次缩减信源,用S1表示。 3、将缩减信源S1的符号仍按概率从大到小顺序排列,重复步骤2,得到只含(n-2)个符号的缩减信源S2. 4、重复上述步骤,直至缩减信源只剩两个符号为止,此时所剩两个符号的概率之和必为1。然后从最后一级缩减信源开始,依编码路径向前返回,就得到各信源符号所对应的码字。 过程: 用MATLAB编写代码实现Huffman编码其程序为: %哈夫曼编码的MA TLAB实现(基于0、1编码):

clc; clear; A=[0.3,0.2,0.1,0.2,0.2];信源消息的概率序列 A=fliplr(sort(A));%按降序排列 T=A; [m,n]=size(A); B=zeros(n,n-1);%空的编码表(矩阵) for i=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; for j=2:n-1%生成编码表的其他各列 for i=1:t B(i,j)=T(i); end K=find(T==r); B(n,j)=K(end);%从第二列开始,每列的最后一个元素记录特征元素在

信息论与编码自学报告09266

《信息论与编码》课程自学报告 题目:《信息论与编码》自学报告 学号: 姓名: 任课教师:黄素娟 联系方式: 二零17年 1月 10日

第一部分 阐述“第四章 信息率失真函数”主要内容 1、基本概念 失真函数与平均失真度 平均失真度 在离散情况下,信源X ={a1,a2,…ar} ,其概率分布p(x)=[p(a1),p(a2),…,p(ar)] ,信宿Y = {b1,b2,…bs} 。若已知试验信道的传递概率为p(bj/ai)时,则平均失真度为: 1 1 ()(,)()(/)(,) r s i j i i j XY i j D p ab d a b p a p b a d a b === =∑∑∑ 凡满足保真度准则---平均失真度D D0的试验信通称D 失真许可的试验信道。 失真函数 假如某一信源X ,输出样值为xi ,xi {a1,…an},经过有失真的信源编码器,输出Y ,样值为yj ,yj {b1,…bm}。如果xi =yj ,则认为没有失真;如果xi yj ,那么就产生了失真。失真的大小,用一个量来表示,即失真函数d(xi ,yj),以衡量用yj 代替xi 所引

起的失真程度。一般失真函数定义为 最常用的失真函数 前三种失真函数适用于连续信源,后一种适用于离散信源。 信息率失真函数的定义 互信息取决于信源分布和信道转移概率分布。当p(xi)一定时,互信息I是关于p(yj/xi) 的U型凸函数,存在极小值。在上述允许信道PD中,可以寻找一种信道pij,使给定的信源p(xi)经过此信道传输后,互信息I(X;Y)达到最小。该最小的互信息就称为信息率失真函数R(D),即 单位:bit/信源符号 对于离散无记忆信源,R(D)函数可写成

信息论课程设计报告

xx大学 信息论课程设计 姓名: 学号: 学院: 指导老师: 完成日期:2015.01.04 一、判定唯一可译码

1.任务说明: 输入:任意的一个码(即已知码字个数及每个具体的码字) 输出:判决结果(是/不是) 输入文件:in1.txt,含至少2组码,每组的结尾为”$”符 输出文件:out1.txt,对每组码的判断结果 说明:为了简化设计,可以假定码字为0,1串 2.问题分析、实现原理 判定唯一可译码根据唯一可译码的判别方法,利用数据结构所学的知识,定义字符串数据类型并利用指针进行编程来实现算法。 算法: 1、考察C 中所有的码字,若Wi是Wj的前缀,则将对应的后缀作为一个尾随后缀码放入集合Fi+1中; 2、考察C和Fi俩个集合,若Wi ∈C是Wj∈F的前缀或Wi ∈F是Wj∈C的前缀,则将相应的后缀作为尾随后缀码放入集合Fi+1中; 3、F=∪Fi即为码C的尾随后缀集合; 4、若F中出现了C中的元素,算法终止,返回假(C不是唯一可译码);否则若F中没有出现新的元素则返回真。 3.源代码: #include #include stdlib.h #include using namespace std; struct strings { char *string; struct strings *next; }; struct strings Fstr, *Fh, *FP; //输出当前集合 void outputstr(strings *str) { do { cout<string<next; }while(str); cout<b?b:a;

最新——循环码(9,3)码

目录 目录 (1) 一、摘要: (2) 二、关键字: (2) 三、基本概念: (2) 四、循环码的多项式描述: (3) 4.1 生成多项式g(x)及生成矩阵G (3) 4.2 系统循环码 (4) 4.3 循环码的编码: (5) 4.4 检错纠错能力 (6) 五、编码器.译码器原理图: (6) 5.1 编码器原理图 (6) 5.2 译码器原理图 (8) 六、循环码和线性分组码、Hamming码的区别、联系: (12) 6.1 线性分组码 (12) 6.2 循环码 (12) 6.3 汉明码hamming (13) 七、循环码的MATLAB仿真: (13) 八、参考文献: (16) 九、参与人员: (16)

循环码(9,3)码课程设计 一、摘要: 本报告详细给出了循环码的定义以及由生成多项式求解生成矩阵和系统生成矩阵的过程,并在Matlab 环境下写出了循环码的编码器和解码器代码,实现了编码和译码功能。分析和讨论了此码发现错误、纠正错误的能力,并讨论了其与线性分组码、Hamming 码等信道编码的区别与联系。 二、关键字: 循环码 编码 译码 检错 纠错 Matlab 三、基本概念: 更好的设计和实现线性分组码的方法是引入特定的数学结构来界定某一类线性分组码。循环码即是采用循环移位特性界定的一类线性分组码。 循环码定义:设C 使某(n,k)线性分组码的码字集合,如果对任何 C c c c C n n ∈=--),,,(021 ,它的循环移位),,,(1032)1(---=n n n c c c c C 也属于C ,则称该(n,k )码为循环码。 该码在结构上有另外的限制,即一个码字任意循环移位的结果仍是一个有效码字。其特点是:(1)可以用反馈移位寄存器很容易实现编码和伴随式的计算;(2)由于循环码有很多固有的代数结构,从而可以找

信息论实验报告李红莲实验一

信息论基础 实验报告 专业:电子信息工程 姓名: 班级/学号:电信1002/ 指导老师:李红莲 实验一:信息熵、信道容量的计算 一、实验目的 掌握使用计算机计算信息熵、信道容量的方法。 二、实验原理 1.参照教材(焦瑞莉等编著《信息论基础教程》)第14页式(2-16)理解信息熵的定义 2.参照教材(焦瑞莉等编著《信息论基础教程》)第68页式(3-15)理解信道容量的定义 三、实验方法与实验步骤 (一)参照教材第215页信源熵程序建立文件entropy.m (二)建立文件exercise2_3_1.m通过调用entropy.m计算教材第69页练习2.3(1)(参考答案:0.81比特) (三)参照教材第215页离散无记忆信道容量的迭代计算程序建立文件channelcap.m (四)建立文件exercise3_2_b.m通过调用channelcap.m计算教材第92页练习3.2(b)(参考答案:0.0817比特) 四.源程序代码 1)function H=entropy(P,r) if(~isempty(find(P<=0))) error('Not a prob.Vector,negative component'); end if(abs(sum(P)-1)>10e-10) error('Not aprob vetor,component do not add up to 1'); end H=(sum(-P.*log2(P)))/(log2(r)+eps); clc; H=entropy([1/4,3/4],2 2)function [CC,Paa]=channelcap(P,k)

信息论与编码实验报告

信息论与编码实验报告 学院:计算机与通信工程学院 专业:计算机科学与技术 班级:计1203班 学号: 姓名: 2014年12月29日

实验一唯一可译码判别准则 实验目的: 1.进一步熟悉唯一可译码判别准则; 2.掌握C语言字符串处理程序的设计和调试技术。 实验内容: 1.已知:信源符号数和码字集合C; 2.输入:任意的一个码,码字的个数和每个具体的码字在运行时从键盘输入; 3.输出:判决(是唯一可译码/不是唯一可译码);循环(若继续判决则输入1循环判决,否则输入0结束运行)。 实验原理: 根据唯一可译码的判别方法,利用数据结构所学的知识,定义字符串数据类型并利用指针进行编程来实现算法。 算法:1、考察C 中所有的码字,若Wi是Wj的前缀,则将对应的后缀作为一个尾随后缀码放入集合Fi+1中; 2、考察C和Fi俩个集合,若Wi ∈C是Wj∈F的前缀或Wi ∈F是Wj∈C的前缀,则将相应的后缀作为尾随后缀码放入集合Fi+1中; 3、F=∪Fi即为码C的尾随后缀集合; 4、若F中出现了C中的元素,算法终止,返回假(C不是唯一可译码);否则若F中没有出现新的元素,则返回真。 实验环境及实验文件存档名: 1.实验环境:visual C++ 6.0 2.文件名:weiyikeyi.cpp 实验结果及分析: 1.源代码: #include #include char c[100][50]; char f[300][50]; int N,sum=0; //N为输入码字的个数,sum为尾随后缀集合中码字的个数 int flag;//判断是否唯一可译标志位 void patterson(char c[],char d[]) //检测尾随后缀 { int i,j,k; for(i=0;;i++) { if(c[i]=='\0'&&d[i]=='\0')//2字符串一样,跳出

信息论与编码实验报告材料

本科生实验报告 实验课程信息理论与编码 学院名称信息科学与技术学院 专业名称 学生姓名 学生学号 指导教师 实验地点 实验成绩 二〇一六年九月----二〇一六年十一月

填写说明 1、适用于本科生所有的实验报告(印制实验报告册除外); 2、专业填写为专业全称,有专业方向的用小括号标明; 3、格式要求: ①用A4纸双面打印(封面双面打印)或在A4大小纸上用蓝黑色水笔书写。 ②打印排版:正文用宋体小四号,1.5倍行距,页边距采取默认形式(上下2.54cm, 左右2.54cm,页眉1.5cm,页脚1.75cm)。字符间距为默认值(缩放100%,间距:标准);页码用小五号字底端居中。 ③具体要求: 题目(二号黑体居中); 摘要(“摘要”二字用小二号黑体居中,隔行书写摘要的文字部分,小4号宋体); 关键词(隔行顶格书写“关键词”三字,提炼3-5个关键词,用分号隔开,小4号黑体); 正文部分采用三级标题; 第1章××(小二号黑体居中,段前0.5行) 1.1 ×××××小三号黑体×××××(段前、段后0.5行) 1.1.1小四号黑体(段前、段后0.5行) 参考文献(黑体小二号居中,段前0.5行),参考文献用五号宋体,参照《参考文献著录规则(GB/T 7714-2005)》。

实验一:香农(Shannon )编码 一、实验目的 掌握通过计算机实现香农编码的方法。 二、实验要求 对于给定的信源的概率分布,按照香农编码的方法进行计算机实现。 三、实验基本原理 给定某个信源符号的概率分布,通过以下的步骤进行香农编码 1.将信源消息符号按其出现的概率大小排列 )()()(21n x p x p x p ≥≥≥ 2.确定满足下列不等式的整数码长K i ; 1)(lo g )(lo g 22+-<≤-i i i x p K x p 3.为了编成唯一可译码,计算第i 个消息的累加概率 ∑-==1 1 )(i k k i x p p 4.将累加概率P i 变换成二进制数。 5.取P i 二进制数的小数点后K i 位即为该消息符号的二进制码。 四、实验内容 1.对给定信源? ?????=????? ?01.01.015.017.018.019.02.0)(7654321 x x x x x x x X q X 进行二进制香农编码。 2.对给定信源??????=????? ?05.010.015.020.025.025.0)(654321x x x x x x X q X 进行二进制香农编码。 3.自已选择一个例子进行香农编码。 五、实验设备 PC 计算机 ,C++

相关文档
最新文档