
采用香农码和费诺码对该信源进行二进制变长编码,写出编码输出码字,并且求出平均码长和编码效率。
解:计算相应的自信息量
比特 比特
比特 比特
比特 比特
比特 比特
根据香农码编码方法确定码长
可以得到对应码长如表所示
| 符号 | 概率 | 累计概率 | 自信息量 | 码长 | 码字 |
| a1 | 1/2 | 0 | 1 | 1 | 0 |
| a2 | 1/4 | 1/2 | 2 | 2 | 10 |
| a3 | 1/8 | 3/4 | 3 | 3 | 110 |
| a4 | 1/16 | 7/8 | 4 | 4 | 1110 |
| a5 | 1/32 | 15/16 | 5 | 5 | 11110 |
| a6 | 1/ | 31/32 | 6 | 6 | 111110 |
| a7 | 1/128 | 63/ | 7 | 7 | 1111110 |
| a8 | 1/128 | 127/128 | 7 | 7 | 1111111 |
由于每个符号的码长等于自信息量,所以编码效率为1。
费罗马编码过程
| 符号 | 码字 | 码长 | ||||||||
| a1 | 1/2 | 0 | 0 | 1 | ||||||
| a2 | 1/4 | 1 | 0 | 10 | 2 | |||||
| a3 | 1/8 | 1 | 0 | 110 | 3 | |||||
| a4 | 1/16 | 1 | 0 | 110 | 4 | |||||
| a5 | 1/32 | 1 | 0 | 1110 | 5 | |||||
| a6 | 1/ | 1 | 0 | 11110 | 6 | |||||
| a7 | 1/128 | 1 | 0 | 111110 | 7 | |||||
| a8 | 1/128 | 1 | 111111 | 7 | ||||||
使用费罗码对该信源的扩展信源进行二进制变长编码,
(1) 扩展信源长度,写出编码码字,计算平均码长和编码效率。
(2) 扩展信源长度,写出编码码字,计算平均码长和编码效率。
(3) 扩展信源长度,写出编码码字,计算平均码长和编码效率,并且与(1)的结果进行比较。
解:信息熵比特/符号
(1)
| 符号 | 码字 | 码长 |
| A1 | 0 | 1 |
| A2 | 1 | 1 |
编码效率为
(2)
| 序列 | 码字 | 码长 | ||||
| a1a1 | 9/16 | 0 | 0 | 1 | ||
| a1a2 | 3/16 | 1 | 0 | 10 | 2 | |
| a2a1 | 3/16 | 1 | 0 | 110 | 3 | |
| a2a2 | 1/16 | 1 | 111 | 3 | ||
比特/符号
编码效率
(3)当N=4时,
| a1a1 a1a1 | 81/256 | 0 | 0 | 00 | |||||
| a1a1 a1a2 | 27/256 | 1 | 0 | 010 | |||||
| a1a1 a2a1 | 27/256 | 1 | 011 | ||||||
| a1a2 a1a1 | 27/256 | 1 | 0 | 0 | 100 | ||||
| a2a1 a1a1 | 27/256 | 1 | 0 | 1010 | |||||
| a1a1 a2a2 | 9/256 | 1 | 1011 | ||||||
| a1a2 a1a2 | 9/256 | 1 | 0 | 0 | 1100 | ||||
| a1a2 a2a1 | 9/256 | 1 | 0 | 11010 | |||||
| a2a1 a1a2 | 9/256 | 1 | 11011 | ||||||
| a2a1 a2a1 | 9/256 | 1 | 0 | 0 | 11100 | ||||
| a2a2 a1a1 | 9/256 | 1 | 11101 | ||||||
| a1a2 a2a2 | 3/256 | 1 | 0 | 0 | 111100 | ||||
| a2a1 a2a2 | 3/256 | 1 | 111101 | ||||||
| a2a2 a1a2 | 3/256 | 1 | 0 | 111110 | |||||
| a2a2 a2a1 | 3/256 | 1 | 0 | 1111110 | |||||
| a2a2 a2a2 | 1/256 | 1 | 1111111 |
平均码长
可见,随着信源扩展长度的增加,平均码长逐渐逼近熵,编码效率也逐渐提高。
.
5.3某离散无记忆信源的概率空间为
使用哈夫码编码法对该信源的扩展信源进行二进制变长编码,
(1) 扩展信源长度,写出编码码字,计算平均码长和编码效率。
(2) 扩展信源长度,写出编码码字,计算平均码长和编码效率。
(3) 扩展信源长度,写出编码码字,计算平均码长和编码效率,并且与(1)的结果进行比较。
5.4某离散无记忆信源的概率空间
使用约定码表进行哈夫曼进行编码,约定码表的概率空间为
(1)计算平均码长与编码效率。
(2) 如果直接对信源进行哈夫曼编码,写出编码码字,计算平均码长和编码效率。
(3) 比较上述编码结果,并进行讨论。
解:信源的熵为H(X)= 1.984375比特/符号。
1)利用约定码表的概率空间进行编码,得到相应的编码码表如下
| 编码码字 | 码长 | |
| a1 | 0 | 1 |
| a2 | 10 | 2 |
| a3 | 110 | 3 |
| a4 | 1110 | 4 |
| a5 | 11110 | 5 |
| a6 | 111110 | 6 |
| a7 | 1111110 | 7 |
| a8 | 1111111 | 7 |
编码效率为
2)编码码表为
| 编码码字 | 码长 | |
| a2 | 0 | 1 |
| a1 | 10 | 2 |
| a3 | 110 | 3 |
| a5 | 1110 | 4 |
| a4 | 11110 | 5 |
| a6 | 111110 | 6 |
| a7 | 1111110 | 7 |
| a8 | 1111111 | 7 |
3)当实际数据统计规律与产生码表对应的概率相差较大时,编码效率会明显降低。
5.5某信源的概率空间为
使用3进制符号(0,1,2)进行编码,写出哈夫码和费罗码,并且计算编码效率。
5.6某离散无记忆信源的概率空间为
(1) 采用二进制哈夫曼码编码对信源编码,计算编码效率。
(2) 如果采用等长码编码,要求错误译码概率小于,则序列长度为多少?
解:(1)编码结果如下
| 码字 | 码长 | ||
| a1 | 00 | 2 | |
| a2 | 10 | 2 | |
| a3 | 11 | 2 | |
| a4 | 010 | 3 | |
| a5 | 0110 | 4 | |
| a6 | 0111 | 4 |
信源的熵为H(X)=2.353比特/符号
编码效率为
2)自信息量方差为D[I(ai)] = 0.527;
将参数代入
5.8某信源输出二进制序列(0000,0000,0000,0001,1111,0000,0010,0000),对该序列进行不同形式的游程编码,分别给出编码结果
(1) 直接统计连续0和1的个数。
(2) 采用四进制数据进行编码,即如果连续出现符号数量为1,2,3,则输出符号“1”,“2”,“3”,如果当前编码输出为“3”,之后出现符号变化,则应当一个“0”,再对变化后的符号序列进行编码,写出编码结果。
(3) 将符号序列分为4个一组,如果一组的4个符号全部为0,则输出符号“0”;否则输出符号“1”,并且直接输出该符号序列。
解 1) 输出结果为15,5,6,1,5;
2)3 3 3 3 3 0 3 2 3 3 0 1 3 2;
3)0 0 0 10001 11111 0 10010 0;
5.9使用表5.8 二进制游程编码码表对题5.8给定的序列进行游程编码。
解:0 0 0 100 111111 0 1010 0
5.10离散无记忆信源的概率空间为
使用算术编码方法对输出序列进行编码,并且对结果进行译码。
解:累计概率Pi如表所示
| P1 | 0 |
| P2 | 0.5 |
| P3 | 0.75 |
| P4 | 0.875 |
1)C1=C0+A0P2=0+1*0.5 =0.5;
A1=A0*p2=0.25;
2)C2=C1+A1P1=0.5+0.25*0 =0.5;
A2=A1*p1=0.25*0.5=0.125;
3)C3=C2+A2P1=0.5+0.125*0 =0.5;
A3=A2*p1=0.125*0.5=0.0625;
4)C4=C3+A3P3=0.5+0.0625*0 .75=0.546875;
A4=A3*p3=0.0625*0.125= 0.0078125;
L= -lbA4 =7;
编码输出为100110
译码过程如下
将接受到的码字100110转化为概率C0=0. 546875,并令A0=1;
1)由于概率处于[0.5,0.75),所以第一个符号译码为a2,
C1=(C0-P2)/p2=(0. 546875-0.5)/0.25=0.1875;
2)由于C1处于区间[0,0.5),所以第2个符号译码为a1;
C2=(C1-P1)/p1=0.375;
3)由于C2处于区间[0,0.5),所以第3个符号译码为a1;
C3=(C2-P1)/p1=0.75;
4)由于C3处于区间[0.75,0.875),所以第4个符号译码为a3;
C4=(C1-P3)/p3=0;
5)译码输出符号数量已经达到要求,译码结束。
5.11某信源输出符号有两种类型,对应的概率空间分别为
输出序列为,对应的符号类型分别为,使用算术编码器进行编码,并且对结果进行译码。
解:首先计算累计概率
| P11 | 0 |
| P12 | 0.5 |
| P13 | 0.75 |
| P14 | 0.875 |
| P21 | 0 |
| P22 | 0.25 |
| P23 | 0.5 |
| P24 | 0.75 |
A0=1,C0=0;
1)第1个输入符号为第1类数据的a2,所以有
C1=C0+A0P12 =0.5
A1=A0p12=0.25
2)第2个输入符号为第2类数据的a1,所以有
C2=C1+A1P21 =0.5
A2=A1p21=0.0625
3)第3个输入符号为第1类数据的a1,所以有
C3=C2+A2P11 =0.5
A3=A2p11=0.03125
4)第4个输入符号为第1类数据的a3,所以有
C4=C3+A3P13=0.5234375
A4=A3p13=0.00390625
L=-lb0.00390625=8
将C4小数部分用8比特二进制表示出来,得到输出码字为1000,0110
译码过程:
将接受到码字化为概率C0=0.5234375
1)第1个数据为第1类数据,处于区间[0.5,0.75)译码输出为a2;
C1=(C0-P12)/p12 = (0.5234375-0.5)/0.25 = 0.09375
2) 第2个数据为第2类数据,处于区间[0, 0.25)译码输出为a1;
C2=(C1-P21)/p21 =(0.09375 -0)/0.25 = 0. 375;
3) 第3个数据为第1类数据,处于区间[0, 0.5)译码输出为a1;
C3=(C2-P11)/p11 =(0.09375 -0)/0.5 = 0. 75
4) 第4个数据为第1类数据,处于区间[0.5,0.75)译码输出为a3;
C4=(C3-P13)/p13 =(0.75 -0.75)/0.125 = 0;
译码输出符号数量满足要求,译码结束。
