zoukankan      html  css  js  c++  java
  • 第三次作业

    1、参考书《数据压缩导论(第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(a0)+ P(a1)=0.2,  Fx(2)=P(a1)+ P(a2)=0.5,   Fx(3)=P(a1)+ P(a2)+P(a3)=1,

                 因为公式,

                        u(k)=l(k-1)+(u(k-1)-l(k-1))*Fx(xk)

                        l(k)=l(k-1)+(u(k-1)-l(k-1))*Fx(xk-1)

                  可以得出上界和下界。初始化u(0) =1,  l(0)=0,

                 序列的第一个元素是1,             

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

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

                  所以标签在区间[0, 0.2)中;

                 序列的第二个元素是1,

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

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

                 所以标签在区间[0,0.04)中;

                 序列的第三个元素是3,

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

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

                 所以标签在区间[0.02,0.04)中;

                 序列的第四个元素是2,

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

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

                 所以标签在区间[0.024,0.03)中; 

                 序列的第五个元素是3,

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

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

                 所以标签在区间[0.027,0.03)中; 

                 序列的第六个元素是1,

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

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

                 所以标签在区间[0.027,0.0276)中。

                 通常取区间的中点作为标签,所以序列113231的标签为:

                                   Tx(113231)=(0.027+0.0276)/2=0.0273,

                 即序列a1a1a3a2a3a1 的实值标签为0.0273。

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

           解:程序代码:

    #include<stdio.h>
    #define N 100
    int main()
    {
        double T,tag;
        double F[4]={0.0,0.2,0.5,1.0};
        double l[N]={0.0},u[N]={1.0};
        int n,j,M[N];
        printf("输入标签的值:");
        scanf("%lf",&tag);
        printf("输入序列的长度:");
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
        {
            T=(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(i=1;i<=n;i++)
        {
            printf("%d",M[i]);
        }
        printf("
    ");
        return 0;
    }

        输出结果:

  • 相关阅读:
    GTK+ 3.6.2 发布,小的 bug 修复版本
    RunJS 新增 Echo Ajax 测试功能
    Mozilla 发布 Popcorn Maker,在线创作视频
    Sina微博OAuth2框架解密
    Mina状态机State Machine
    Mozilla 发布 Shumway —— 纯JS的SWF解析器
    Code Browser 4.5 发布,代码浏览器
    ROSA 2012 "Enterprise Linux Server" 发布
    ltrace 0.7.0 发布,程序调试工具
    Artifactory 2.6.5 发布,Maven 扩展工具
  • 原文地址:https://www.cnblogs.com/zhangyang528090150/p/4812512.html
Copyright © 2011-2022 走看看