第三次作业

参考书《数据压缩导论(第4版)》  Page 100   5, 6

  5、给定如表4-9所示的概率模型,求出序列a1a1a3a2a3a1 的实值标签。

:由概率模型可得:

     对序列“113231”编码:

      Fx(1)=0.2,Fx(2)=0.5,Fx(3)=1

      l(0)=0,u(0)=1

      对序列“1”编码:

      l(1)= l(0)+( u(0)- l(0)) Fx(0)=0+(1-0)*0=0

      u(1)= l(0)+( u(0)- l(0)) Fx(1)= 0+(1-0)*0.2=0.2

      对序列“11”编码:

      l(2)= l(1)+( u(1)- l(1)) Fx(0)=0+(0.2-0)*0=0

      u(2)= l(1)+( u(1)- l(1)) Fx(1)= 0+(0.2-0)*0.2=0.04

      对序列“113”编码:

      l(3)= l(2)+( u(2)- l(2)) Fx(2)=0+(0.04-0)*0.5=0.02

      u(3)= l(2)+( u(2)- l(2)) Fx(3)= 0+(0.04-0)*1=0.04

      对序列“1132”编码:

      l(4)= l(3)+( u(3)- l(3)) Fx(1)=0.02+(0.04-0.02)*0.2=0.024

      u(4)= l(3)+( u(3)- l(3)) Fx(2)=0.02+(0.04-0.02)*0.5=0.03

      对序列“11323”编码:

      l(5)= l(4)+( u(4)- l(4)) Fx(2)=0.024+(0.03-0.024)*0.5=0.027

      u(5)= l(4)+( u(4)- l(4)) Fx(3)=0.024+(0.03-0.024)*1=0.03

      对序列“113231”编码:

      l(6)= l(5)+( u(5)- l(5)) Fx(0)=0.027+(0.03-0.027)*0=0.027

      u(6)= l(5)+( u(5)- l(5)) Fx(1)=0.027+(0.03-0.027)*0.2=0.0276

      因此可以生成序列a1a1a3a2a3a1的标签如下:

Tx(a1a1a3a2a3a1)=(0.027+0.0276)/2=0.0273

  6、对于表4-9所示的概率模型,对于一个标签为0.63215699的长度为10的序列进行解码。

解:源程序:

#include<stdio.h>
int main()
{
    double tag=0.63215699;
    double l[100],u[100],F[100];
    double t;
    l[0]=0;
    u[0]=1;
    F[0]=0;
    F[1]=0.2;
    F[2]=0.5;
    F[3]=1;
    int M[100];
    int j;
        for(int i=1;i<=10;i++)
    {
        t=(double)(tag-l[i-1])/(u[i-1]-l[i-1]);
        if(t>=F[0]&&t<=F[1])
        {
            M[i]=1;
            j=1;
        }
        else if(t>F[1]&&t<=F[2])
        {
            M[i]=2;
            j=2;
        }
        else if(t>F[2]&&t<=F[3])
        {
            M[i]=3;
            j=3;
        }
        u[i]=l[i-1]+(u[i-1]-l[i-1])*F[j];
        l[i]=l[i-1]+(u[i-1]-l[i-1])*F[j-1];
    }
    for(int k=1;k<=10;k++)
    {
        printf("%d",M[k]);
    }
        printf("\n");
    return 0;
}

 

运行结果如图所示:

所以进行编码的结果为:3221213223

 

posted @ 2015-09-25 10:35  黄波1  阅读(188)  评论(0编辑  收藏  举报