参考书《数据压缩导论(第4版)》 Page 100 5, 6
5、给定如表4-9所示的概率模型,求出序列a1a1a3a2a3a1 的实值标签。
解: 由表4-9可知: p(a1)=0.2, p(a2)=0.3, p(a3)=0.5.
由X(ai)=i, 则有: X(a1)=1, X(a2)=2, X(a3)=3.
则序列a1a1a3a2a3a1为: 113231
又由概率密度可知累积密度:Fx(0)=0, Fx(1)=P(a1)=0.2, Fx(2)=P(a1)+ P(a2)=0.5, Fx(3)=P(a1)+ P(a2)+P(a3)=1
对序列编码时, 因为u(n)=l(n-1)+(u(n-1)-l(n-1))*Fx(xn) l(n)=l(n-1)+(u(n-1)-l(n-1))*Fx(xn-1), 得出:u0=1, l0=0
所以,序列第一个元素"1"时:u1=l0+(u0-l0)*Fx(1)=0.2, l1=l0+(u0-l0)*Fx(0)=0
序列第二个元素"11"时:u2=l1+(u1-l1)*Fx(1)=0.04, l2=l1+(u1-l1)*Fx(0)=0
序列第三个元素"113"时 : u3=l2+(u2-l2)*Fx(3)=0.04, l3=l2+(u2-l2)*Fx(2)=0.02
序列第四个元素"1132"时 :u4=l3+(u3-l3)*Fx(2)=0.03, l4=l3+(u3-l3)*Fx(1)=0.024
序列第五个元素"11323"时 :u5=l4+(u4-l4)*Fx(3)=0.03, l5=l4+(u4-l4)*Fx(2)=0.027
序列第六个元素"113231"时 :u6=l5+(u5-l5)*Fx(1)=0.027, l6=l5+(u5-l5)*Fx(0)=0.0276
所以该序列a1a1a3a2a3a1的实值标签T(a1a1a3a2a3a1)=(u6+l6)/2=0.0273
6、对于表4-9所示的概率模型,对于一个标签为0.63215699的长度为10的序列进行解码。
解:由上题我们已求出Fx(0)=0, Fx(1)=P(a1)=0.2, Fx(2)=P(a1)+ P(a2)=0.5, Fx(3)=P(a1)+ P(a2)+P(a3)=1。
再根据已知条件,可写出以下程序且调试结果如下:
所以,对于表4-9所示的概率模型,对于一个标签为0.63215699的长度为10的序列进行解码,解码后的结果为:3221213223