已知二元信源{0,1},其p(0)=0.25,p(1)=0.75,试求出序列s=11110011的算术编码的码字,并计算此序列的平均码长和编码效率
时间: 2024-04-21 07:28:21 浏览: 104
根据算术编码的思想,先求出每个符号在序列中出现的概率:
P(0) = 4/8 = 0.5
P(1) = 4/8 = 0.5
接下来,可以利用编码区间与概率的对应关系来进行编码。初始时,编码区间为[0,1),对于序列中的每个符号,根据其对应的概率将编码区间进一步缩小。具体操作如下:
1. 对于第一个符号1,编码区间变为[0.5,1),代表这个符号编码为1。
2. 对于第二个符号1,此时编码区间为[0.625,0.875),代表这个符号编码为1。
3. 对于第三个符号1,此时编码区间为[0.71875,0.82421875),代表这个符号编码为1。
4. 对于第四个符号1,此时编码区间为[0.7734375,0.80078125),代表这个符号编码为1。
5. 对于第五个符号0,此时编码区间为[0.7734375,0.78515625),代表这个符号编码为0。
6. 对于第六个符号0,此时编码区间为[0.77441406,0.77929687),代表这个符号编码为0。
7. 对于第七个符号1,此时编码区间为[0.77636719,0.77832031),代表这个符号编码为1。
8. 对于第八个符号1,此时编码区间为[0.77758789,0.77807617),代表这个符号编码为1。
因此,序列s=11110011的算术编码的码字为11110011。
平均码长为:
L = 4/8 * 1 + 4/8 * 1 = 1
编码效率为:
η = H(S) / L
其中,H(S)为二元信源的熵,即:
H(S) = -0.25 * log2(0.25) - 0.75 * log2(0.75) = 0.811
因此,编码效率为η = 0.811/1 = 0.811,比最优编码效率稍低。
阅读全文