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

    1-1数据压缩的一个基本问题是“我们要压缩什么”,对此你是怎样理解的?

    答:我们要压缩的压缩对象为信号空间,指:物理空间,时间区间,电磁频段,也就是某信号集合所占的空域,时域和频域空间。

    1-2数据压缩的另一个基本问题是“为什么进行压缩”,对此你又是怎样理解的?

    答:在信息爆炸的时代,数据量特别大。数据压缩尤为重要。数据压缩的好处:较快的传输各种信源,在现有通信干线上开通更多的并行业务,降低发射功率,紧缩数据存储容量。

    1-6数据压缩是如何分类的?

    答:数据压缩分为可逆压缩(冗余度压缩、熵编码)和不可逆压缩(熵压缩)。而可逆压缩包括统计编码和其他编码。不可逆压缩又包括特征抽取和量化两大类。

    1.4 项目与习题

     1.  用你的计算机上的压缩工具来压缩不同文件。研究原文件的大小和类型对于压缩文件与原文件大小之比的影响。

    答:从多次压缩文件的经验来看,得出:压缩文件比原文件要小,但原文件越大,压缩后的文件也大,除了文件本身大小,文件类型对压缩后的文件大小影响更大,对于不同类型的文件,压缩时涉及到有损压缩和无损压缩,有损压缩后的文件明显变小,与原文件的大小比更大,同理,无损压缩就小。

    2. 从一本通俗杂志中摘录几段文字,并删除所有不会影响理解的文字,实现压缩。例如,在"this is the dog that belong to my friend”  中,删除 is 、the、that和to之后,仍然能传递相同的意思。用被删除的单词数与原文本的总单词数之比来衡量文本中的冗余度。用一本技术期刊中的文字来重复这一实验。对于摘自不同来源的文字,我们能否就其冗余度做出定量论述?

    答: 冗余度它表征信源信息率的多余程度,是描述信源客观统计特性的一个物理量。也就是说删除多余的一个量,它不会影响整个数据的完整性。 正由于信源(数据)存在着冗余度,既存在着不必要传送的信息,因此信源也就存在进一步压缩信息率的可能性。冗余度越大,压缩潜力也就越大。就仙侬信息论来说数据=信息+冗余度。对于摘自不同来源的文字,根据冗余度的不同,就能做出定量分析。

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

    3、给定符号集A={a1,a2,a3,a4},求一下条件下的一阶熵:

    aP(a1)=P(a2)=P(a3)=P(a4)=1/4

    bP(a1)=1/2 , P(a2)=1/4 , P(a3)=P(a4)=1/8 

    cP(a1)=0.505 ,  P(a2)=1/4 , P(a3)=1/4 , P(a4)=0.12 

    解:(a)(-1/4)*4*log2(1/4)=2bit

    (b)(-1/2)*log2(1/2)+(-1/4)log2(1/4)+(-1/8)*2*log2(1/8)=1.75bit

    (c)(-0.505)*log2(0.505)+(-1/4)*log2(1/4)+(-1/4)*log2(1/4)+(-0.12)*log2(0.12)=1.2967-0.12*log20.12  bit

     

     5、考虑以下序列:

     

                    ATGCTTAACGTGCTTAACCTGAAGCTTCCGCTGAAGAACCTG

     

                    CTGAACCCGCTTAAGCTTAAGCTGAACCTTCTGAACCTGCTT

     

    (a)根据此序列估计各概率值,并计算这一序列的一阶、二阶、三阶和四阶熵。

     

    b)根据这些熵,能否推断此序列具有什么样的结构?

     

    答(a):A的频数是:21 T的频数是:23 G的频数是:16 C的频数是:24

     

    他们对应的概率分别为: P(A)=1/4 P(T)=23/84 P(G)=4/21 P(C)=2/7.

     

    一阶熵为:

     

    -1/4*log2(1/4)-23/84*log2(23/84)-4/21*log2(4/21)-2/7*log2(2/7)

     

    =0.5+0.512+0.457+0.514

     

    =1.983(bit)

     

     

    二阶熵为:

     

    AT,GC,TT,AA,CG,TG,CT,TA,AC,CT,GA,AG,CT,TC,CG,CT,GA,AG,AA,CC,TG

     

    CT,GA,AC,CC,GC,TT,AA,GC,TT,AA,GC,TG,AA,CC,TT,CT,GA,AC,CT,GC,TT

     

    AT的频数是:1 GC的频数是:5 TT的频数是:5 AA的频数是:5 CG的频数是:2 TG的频数是:3

     

    TA的频数是:1 AC的频数是:4 AG的频数是:2 TC的频数是:1 CC的频数是:3 CT的频数是:7

     

    P(AT)=1/42,P(GC)=5/42,P(TT)=5/42,P(AA)=5/42,P(CG)=1/21,P(TG)=1/14,P(CT)=7/42,P(TA)=1/42,
    P(AC)=1/14,P(GA)=2/21,P(AG)=1/21,P(TC)=1/42,P(CC)=1/14

     

     

    -1/42*log2(1/42)*4-5/42*log2(5/42)*3-1/21*log2(1/21)*2-1/14*log2(1/14)*3-2/21*log2(2/21)-7/42*log2(7/42)

     

    =0.51+1.096+0.627+0.544+0.323+0.43

     

    =3.530(bit)

     

    三阶熵为:

     

    ATG,CTT,AAC,GTG,CTT,AAC,CTG,AAG,CTT,CCG,CTG,AAG,AAC,CTG

     

    CTG,AAC,CCG,CTT,AAG,CTT,AAG,CTG,AAC,CTT,CTG,AAC,CTG,CTT

     

     

    ATG的频数是:1 CTT的频数是:7 AAC的频数是:6 GTG的频数是:1 CTG的频数是:7 AAG的频数是:4 AAG的频数是:2

     

    P(ATG)=1/28,P(CTT)=7/28,P(AAC)=3/14,P(GTG)=1/28,P(CTG)=1/4,P(AAG)=1/7,P(CCG)=1/14

     

     

    -1/28*log2(1/28)*2-1/4*log2(1/4)*2-3/14*log2(3/14) -1/7*log2(1/7) -1/14*log2(1/14)

     

    =0.343+1+0.476+0.401+0.271

     

    =2.491(bit)

     

    四阶熵为:

     

    ATGC,TTAA,CGTG,CTTA,ACCT,GAAG,CTTC,CGCT,GAAG,AACC,TGCT

     

    GAAC,CCGC,TTAA,GCTT,AAGC,TGAA,CCTT,CTGA,ACCT,GCTT

     

     

    ATGC的频数是:1 TTAA的频数是:2 CGTG的频数是:1 CTTA的频数是:1 ACCT的频数是:2 GAAG的频数是:2 CTTC的频数是:1 CGCT的频数是:1 AACC的频数是:1 TGCT的频数是:1

     

    GAAC的频数是:1 GCTT的频数是:2 AAGC的频数是:1 TGAA的频数是:1 CCTT的频数是:1 CTGA的频数是:1 
    P(ATGC)=1/21,P(TTAA)=2/21,P(CGTG)=1/21,P(CTTA)=1/21,P(ACCT)=2/21,P(GAAG)=2/21,P(CTTC)=1/21,P(CGCT)=1/21,P(AACC)=1/21,P(TGCT)=1/21,P(GAAC)=1/21,P(CCGC)=1/21,P(GCTT)=2/21,P(AAGC)=1/21,P(TGAA)=1/21,P(CCTT)=1/21,P(CTGA)=1/21.

     

     

    -1/21*log2(1/21)*13-2/21*log2(2/21)*4

     

    =2.718+1.292

     

    =4.01(bit)

     

    答(b):序列的结构:根据熵的比较,我们可以看出,随着熵的阶数不断增加,熵也不断增大,相应阶数字母组合出现的概率就越低。根据上的含义,其包含的信息量就越少。相反,随着熵的阶数的减小,熵也不断的减小,相应阶数字母组合出现的概率就越高,其包含的信息量就越多。

     

     

     

    7、做一个实验,看看一个模型能够多么准确地描述一个信源。

     

     (a)编写一段程序,从包括26个字母的符号集{a,b,...,z}中随机选择字母,组成100个四字母单词,这些单词中有多少是有意义的?

     

    #include<stdio.h>
    #include <stdlib.h> 
    #include<time.h>
    int main()
    {
      char a[200][200];
      int m;
      srand((int)time(NULL));
      for(int i=1;i<=100;i++)
      {
        for(int j=1;j<=4;j++)
          {
            m=rand()%26;
            a[i][j]=m+'a';
          }
      }
      
        for( i=1;i<=100;i++)
        {
          for(int j=1;j<=4;j++)
          {
            printf("%c",a[i][j]);
           }
         printf("	");
        }  
    return 0;
    }


     

     

  • 相关阅读:
    CSUFT 1002 Robot Navigation
    CSUFT 1003 All Your Base
    Uva 1599 最佳路径
    Uva 10129 单词
    欧拉回路
    Uva 10305 给任务排序
    uva 816 Abbott的复仇
    Uva 1103 古代象形文字
    Uva 10118 免费糖果
    Uva 725 除法
  • 原文地址:https://www.cnblogs.com/wangyuntao/p/4765877.html
Copyright © 2011-2022 走看看