• 第三次作业 黄学才


    一、参考书《数据压缩导论(第4版)》  Page 100   

          5, 6

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

    解:由上图可知,

                         p(a1)=0.2 ,p(a2)=0.3  ,p(a3)=0.5

                         FX(0)=0,FX(1)=0.2 ,FX(2)=0.5  ,FX(3)=1.0, U(0)=1 ,L(0)=0

                         因为X(ai)=i,    所以  X(a1)=1,X(a2)=2,X(a3)=3

                         由公式,L(n)=L(n-1)+(U(n-1)-L(n-1))Fx(xn-1)

                                     u(n)=L(n-1)+(U(n-1)-L(n-1))Fx(xn)

    第一次a1出现:

                                 L(1)=L(0)+(U(0)-L(0))Fx(0)=0

                                 U(1)=L(0)+(U(0)-L(0))Fx(1)=0.2

    第二次出现a1出现:

                                 L(2)=L(1)+(U(1)-L(1))Fx(0)=0

                                 U(2)=L(1)+(U(1)-L(1))Fx(1)=0.04

    第三次出现a3出现:

                                 L(3)=L(2)+(U(2)-L(2))Fx(2)=0.02

                                 U(3)=L(2)+(U(2)-L(2))Fx(3)=0.04

    第四次a2出现:

                                 L(4)=L(3)+(U(3)-L(3))Fx(1)=0.024

                                 U(4)=L(3)+(U(3)-L(3))Fx(2)=0.03

    第五次a3出现:

                                 L(5)=L(4)+(U(4)-L(4))Fx(2)=0.027

                                 U(5)=L(4)+(U(4)-L(4))Fx(3)=0.03

    第六次a1出现:

                                L(6)=L(5)+(U(5)-L(5))Fx(0)=0.027

                               U(6)=L(5)+(U(5)-L(5))Fx(1)=0.0276

    所以,序列a1a1a3a2a3a1的实值标签为:

                                T(113231)=(L(6)+ U(6))/2=0.0273;

                               

    #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;
    }


  • 相关阅读:
    arcengine动态显示所需字段值
    arcengine标注转注记
    AreEngine 求最小面积的外接矩形,非IEnvelope,表达不清楚了
    数据库压缩(以mdb为测试对象,Arcengine——ILocalDataCompact接口与IDataCompact接口的使用)
    iMac环境下 配置flutter镜像
    微信小程序radio点选框,再次点击取消
    修改状态栏的颜色
    ios10 设置权限
    使用js动态更改:after的值
    canvas时钟
  • 原文地址:https://www.cnblogs.com/huangxuecai/p/4848694.html
Copyright © 2020-2023  润新知