无失真信源编码定理

香农三大定理的香农第一定理

香农第一定理(可变长无失真信源编码定理)设离散无记忆信源X包含N个符号{x1,x2,…,xi,..,xN},信源发出K重符号序列,则此信源可发出N^k个不同的符号序列消息,其中第j个符号序列消息的出现概率为PKj,其信源编码后所得的二进制代码组长度为Bj,代码组的平均长度B为B=PK1B1+PK2B2+…+PKN^kBN^k当K趋于无限大时,B和信息量H(X)之间的关系为B*K=H(X)(K趋近无穷)香农第一定理又称为无失真信源编码定理或变长码信源编码定理。香农第一定理的意义:将原始信源符号转化为新的码符号,使码符号尽量服从等概分布,从而每个码符号所携带的信息量达到最大,进而可以用尽量少的码符号传输信源信息。

信源编码的信源编码定理

不同类型的信源,是否存在有每种信源的最佳的信源编码,这通常是用信源编码定理来表示。最简单、最有实用指导意义的信源编码定理是离散、无记忆型信源的二进制变长编码的编码定理。它证明,一定存在一种无失真编码,当把N个符号进行编码时,平均每个符号所需二进码的码长满足。其中H(U)是信源的符号熵(比特),这就是说,最佳的信源编码应是与信源信息熵H(U)统计匹配的编码,代码长度可接近符号熵。这一结论不仅表明最佳编码存在,而且还给出具体构造码的方法,即按概率特性编成不等长度码。对不同类型信源,如离散或连续、无或有记忆、平稳或非平稳、无或限定失真等,可以构成不同的组合信源,它们都存在各自的信源编码定理。但它们中绝大部分仅是属于理论上的存在性定理,这给具体寻找和实现不同类型信源的信源编码,带来了相当的难度。

信源编码和信道编码的作用是什么?

信源编码是对输入信息进行编码,优化信息和压缩信息并且打成符合标准的数据包。信道编码是在数据中加入验证码,并且把加入验证码的海据进行调制。 2者的作用完全不一样的。

信源编码的分类

信源编码根据信源的性质进行分类,则有信源统计特性已知或未知、无失真或限定失真、无记忆或有记忆信源的编码;按编码方法进行分类可分为分组码或非分组码、等长码或变长码等。然而最常见的是讨论统计特性已知条件下,离散、平稳、无失真信源的编码,消除这类信源剩余度的主要方法有统计匹配编码和解除相关性编码。比如仙农码、费诺码、赫夫曼码,它们属于不等长度分组码,算术编码属于非分组码;预测编码和变换编码是以解除相关性为主的编码。对限定失真的信源编码则是以信息率失真R(D)函数为基础,最典型的是矢量量化编码。对统计特性未知的信源编码称为通用编码。

用C语言编无失真信源编码(哈夫曼编码)

#include

#include

#include

typedef unsigned char U8;

typedef unsigned short U16;

typedef unsigned long U32;

typedef struct HuffmanNode

{

double prob;

struct HuffmanNode *left;

struct HuffmanNode *right;

}huffmancode;

void Init ( U32*, double** );

huffmancode* Encode ( double*, U32 );

huffmancode* CreateBinaryTree ( huffmancode**, int );

void Print ( huffmancode*, char* );

void DeleteBinaryTree ( huffmancode* );

void main()

{

U32 n;

double *p;

huffmancode *pHuffman;

Init ( &n, &p );

pHuffman = Encode ( p, n );

Print ( pHuffman, "" );

DeleteBinaryTree ( pHuffman );

}

void DeleteBinaryTree ( huffmancode *pHuffman )

{

if ( pHuffman->left != NULL )

DeleteBinaryTree ( pHuffman->left );

if ( pHuffman->right != NULL )

DeleteBinaryTree ( pHuffman->right );

free ( pHuffman );

return;

}

void Print ( huffmancode *pHuffman, char *code )

{

int numChild = 0;

int strLen = strlen(code);

char *nextCode = (char*) malloc ( strLen + 2 );

if ( pHuffman->left != NULL )

{

numChild++;

strcpy ( nextCode, code );

nextCode[strLen] = '0';

nextCode[strLen+1] = '\0';

Print ( pHuffman->left, nextCode );

}

if ( pHuffman->right != NULL )

{

numChild++;

strcpy ( nextCode, code );

nextCode[strLen] = '1';

nextCode[strLen+1] = '\0';

Print ( pHuffman->right, nextCode );

}

if ( numChild == 0 )

{

printf ( "%lf\t==>......余下全文>>

哈弗曼编码方法和香农编码方法的理论依据

霍夫曼编码的基本思想:输入一个待编码的串,首先统计串中各字符出现的次数,称之为频次,假设统计频次的数组为count[ ],则霍夫曼编码每次找出count数组中的值最小的两个分别作为左右孩子,建立他们的父节点,循环这个操作2*n-1-n(n是不同的字符数)次,这样就把霍夫曼树建好了。建树的过程需要注意,首先把count数组里面的n个值初始化为霍夫曼树的n个叶子节点,他们的孩子节点的标号初始化为-1,父节点初始化为他本身的标号。接下来是编码,每次从霍夫曼树的叶子节点出发,依次向上找,假设当前的节点标号是i,那么他的父节点必然是myHuffmantree[i].parent,如果i是myHuffmantree[i].parent的左节点,则该节点的路径为0,如果是右节点,则该节点的路径为1。当向上找到一个节点,他的父节点标号就是他本身,就停止(说明该节点已经是根节点)。还有一个需要注意的地方:在查找当前权值最小的两个节点时,那些父节点不是他本身的节点不能考虑进去,因为这些节点已经被处理过了

香农第一定理(可变长无失真信源编码定理)

设离散无记忆信源X包含N个符号{x1,x2,…,xi,..,xN},信源发出K重符号序列,则此信源可发出N^k个不同的符号序列消息,其中第j个符号序列消息的出现概率为PKj,其信源编码后所得的二进制代码组长度为Bj,代码组的平均长度B为

B=PK1B1+PK2B2+…+PKN^kBN^k

当K趋于无限大时,B和信息量H(X)之间的关系为B*K=H(X)(K趋近无穷)

香农第一定理又称为无失真信源编码定理或变长码信源编码定理。

香农第一定理的意义:将原始信源符号转化为新的码符号,使码符号尽量服从等概分布,从而每个码符号所携带的信息量达到最大,进而可以用尽量少的码符号传输信源信息。

香农第二定理(有噪信道编码定理)

有噪信道编码定理。当信道的信息传输率不超过信道容量时,采用合适的信道编码方法可以实现任意高的传输可靠性,但若信息传输率超过了信道容量,就不可能实现可靠的传输。

设某信道有r个输入符号,s个输出符号,信道容量为C,当信道的信息传输率R

香农第三定理(保失真度准则下的有失真信源编码定理)

保真度准则下的信源编码定理,或称有损信源编码定理。只要码长足够长,总可以找到一种信源编码,使编码后的信息传输率略大于率失真函数,而码的平均失真度不大于给定的允许失真度,即D'<=D.

设R(D)为一离散无记忆信源的信息率失真函数,并且选定有限的失真函数,对于任意允许平均失真度D>=0,和任意小的a>0,以及任意足够长的码长N,则一定存在一种信源编码W,其码字个数为M<=EXP{N[R(D)+a]},而编码后码的平均失真度D'(W)<=D+a。

请采纳。

什么是信源在允许一定失真的条件下,信源熵所能压缩的极限

1.统计编码原理──信息量和信息熵

根据香农信息论的原理,最佳的数据压缩方法的理论极限是信息熵。如果要求在编码过程中不丢失信息量,即要求保存信息熵,这种信息保持的编码又叫熵保存编码,或叫熵编码。熵编码是无失真压缩。当然在考虑人眼失真不易察觉的生理特性时,有些图像编码不严格要求熵保存,信息允许通过部分损失来换取高的数据压缩比。这种编码属于有失真数据压缩。

信息是用不确定性的量度定义的,也就是说信息被假设为由一系列的随机变量所代表,它们往往用随机出现的符号来表示。我们称输出这些符号的源为“信源”。也就是要进行研究与压缩的对象。   信息量

信息量指从N个相等可能事件中选出一个事件所需要的信息度量或含量,也可以说是辨别N个事件中特定事件过程中所需提问“是”或“否”的最小次数。

例如:从64个数(1~64的整数)中选定某一个数(采用折半查找算法),提问:“是否大于32?”,则不论回答是与否,都消去半数的可能事件,如此下去,只要问6次这类问题,就可以从64个数中选定一个数,则所需的信息量是 =6(bit)。   我们现在可以换一种方式定义信息量,也就是信息论中信息量的定义。

设从N中选定任一个数X的概率为P(x),假定任选一个数的概率都相等,即P(x)=1/N,则信息量I (x)可定义为:

上式可随对数所用“底”的不同而取不同的值,因而其单位也就不同。设底取大于1的整数α,考虑一般物理器件的二态性,通常α取2,相应的信息量单位为比特(bit);当α=e,相应的信息量单位为奈特(Nat);当α=10,相应的信息量单位为哈特(Hart)。  显然,当随机事件x发生的先验概率P(x)大时,算出的I(x)小,那么这个事件发生的可能性大,不确定性小,事件一旦发生后提供的信息量也少。必然事件的P(x)等于1, I(x)等于0,所以必然事件的消息报导,不含任何信息量;但是一件人们都没有估计到的事件(P(x)极小),一旦发生后,I(x)大,包含的信息量很大。所以随机事件的先验概率,与事件发生后所产生的信息量,有密切关系。I(x)称x发生后的自信息量,它也是一个随机变量。

P(x)大时,算出的I(x)小 必然事件的P(x)等于1, I(x)等于0。

P(x)小时,算出的I(x)大 必然事件的P(x)等于0, I(x)等于1。

I(x)称x发生后的自信息量,它也是一个随机变量。

信息熵

现在可以给“熵”下个定义了。信息量计算的是一个信源的某一个事件(X)的自信息量,而一个信源若由n个随机事件组成,n个随机事件的平均信息量就定义为熵(Entropy)。

熵的准确定义是:信源X发出的xj(j=1,2,……n), 共n个随机事件的自信息统计平均(求数学期望),即

H(X)在信息论中称为信源X的“熵 (Entropy)” ,它的含义是信源X发出任意一个随机变量的平均信息量。

更详细的说,一般在解释和理解信息熵有4种样式

(1) 当处于事件发生之前,H(X)是不确定性的度量;

(2) 当处于事件发生之时,是一种惊奇性的度量;

(3) 当处于事件发生之后,是获得信息的度量;

(4) 还可以理解为是事件随机性的度量.   下面为了掌握信息熵的概念,我们来做一道计算题。

例如:以信源X中有8个随机事件,即n=8。每一个随机事件的概率都相等,即P(x1)=P(x2)=P(x3)……P(x8)=1/8 ,计算信源X的熵。

应用“熵”的定义可得其平均信息量为3比特

......余下全文>>

什么是香农定理

香农三大定理是信息论的基础理论。香农三大定理是存在性定理,虽然并没有提供具体的编码实现方法,但为通信信息的研究指明了方向。香农第一定理是可变长无失真信源编码定理。香农第二定理是有噪信道编码定理。香农第三定理是保失真度准则下的有失真信源编码定理。

一般说的香农定理,指

香农定理给出了信道信息传送速率的上限(比特每秒)和信道信噪比及带宽的关系。香农定理可以解释现代各种无线制式由于带宽不同,所支持的单载波最大吞吐量的不同。

在有随机热噪声的信道上传输数据信号时,信道容量Rmax与信道带宽W,信噪比S/N关系为: Rmax=W*log2(1+S/N)。注意这里的log2是以2为底的对数。

更多详情请度娘吧,贴得到了又犯规了...

扫一扫手机访问

发表评论