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

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

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

        

    答: 由题意可得:P(a1)=0.2,P(a2)=0.3,P(a3)=0.5

          所以: 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(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)

    因为要求出序列a1a1a3a2a3a1 的实值标签,即求序列113231的实值标签。

    所以序列号1在的区间为:

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

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

    序列号11在的区间为:

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

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

    序列号113在的区间为:

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

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

    序列号1132在的区间为:

    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

    序列号11323在的区间为:

    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

    序列号113231在的区间为:

    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

    所以有序列a1a1a3a2a3a1 的实值标签为: Tx(113231)= ( u(6) + l(6)   )/2

                                                                           =(0.0276+0.027)/2

                                                                           =0.0546/2

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

    // 1.cpp : Defines the entry point for the console application.
    //
    
    #include "stdafx.h"
    
    #include<iostream>
    using namespace std;
    #define length 11
    int main()
    {
        double u[11],l[11],F[4];
        u[0]=1;l[0]=0;
        F[0]=0;F[1]=0.2;F[2]=0.5;F[3]=1;
        double tag=0.63215699;
       cout<<"标签为0.63215699的长度为10的序列的解码为:"<<'
    ';
        for(int x=1;x<length;x++)
        {
            for(int n=1;n<4;n++)
            {
                l[x]=l[x-1]+(u[x-1]-l[x-1])*F[n-1];
                u[x]=l[x-1]+(u[x-1]-l[x-1])*F[n];
                if(tag>=l[x]&&tag<u[x])
                {
                    cout<<'a'<<'['<<n<<']';
                    break;
                }
                    
            }        
        }
        cout<<'
    ';
        return 0;
    }

    
    
  • 相关阅读:
    算法与设计模式
    Python开源应用系统
    ASP.NET MVC配置Redis服务
    常用3个框架
    Visual Studio 2015 编译错误 File 的值+乱码的解决方法
    SQL Server2008 R2命令行启动及停止SQL服务的方法
    Linux Shell查看物理CPU个数、核数、逻辑CPU个数
    SQL SERVER 2008R2 执行大脚本文件时,管理工具提示“内存不足”的解决方法
    MVC中未能加载程序集System.Web.Http/System.Web.Http.WebHost
    Windows10中启用原来的Windows照片查看器方法
  • 原文地址:https://www.cnblogs.com/yuanzhanxiang/p/4812603.html
Copyright © 2011-2022 走看看