• 第一次作业


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

    答:在不丢失有用信息的前提下,压缩信号空间,即物理空间、时间空间、频带空间。

    物理空间:如存储器和U盘等数据存储介质。

    时间空间:如传输给定消息集合所需的时间。

    频带空间:如传输给定消息所要求的频带宽。

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

    答:减少信息存储空间,提高其传输、存储和处理效率。经过数据压缩可以将一些占用内存比较大多媒体数据,压缩成可以缩小的文件内存,这样可以方便传递。

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

    答:(1)按照压缩方法是否产生失真分类 —— 根据解码后数据与原始数据是否完全一致进行分类,压缩方法可被分为有失真编码和无失真编码两大类。    

    (2)按照压缩方法的原理分类 —— 根据编码原理进行分类,大致有编码、变换编码、统计编码、分析-合成编码、混合编码和其他一些编码方法。

     

    1.4项目与习题

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

    答:不同的文件类型压缩出来的比例不一样,doc,tet,sql数据库等文件的压缩比例非常大,但是像jpg,mp3等本身就是压缩格式的数字音频或者图片文件,压缩出来的比例就不太大。

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

    答:冗余度它表征源信息率的多于程度,是描述信源客观统计特性的一个物理量。也可以说是从多余的一个量,它不影响数据的完整,也正是因为这一个多余量的存在,才能对其信源进行压缩,压缩后不会影响传递信息。信源=信息+冗余度。

    三. 参考书《数据压缩导论(第4版)》Page 30     3, 5, 7(a)

    2.8项目与习题:

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

    (a) p(a1)=p(a2)=p(a3)=p(a4)=1/4

    (b) p(a1)=1/2,  p(a2)=1/4,p(a3)=p(a4)=1/8

    (c) p(a1)=0.505,  p(a2)=1/4,p(a3)=1/8 ,p(a4)=0.12

       解: H(a)=4*(1/4)*log24=2(bits/symbol)         

              H(b)=(1/2)*log22+(1/4)*log24+2*(1/8)*log28=1.75(bits/symbol)         

              H(c)=0.505*log2(1/0.505)+(1/4)*log24+(1/8)*log28+0.12*log2(1/0.12)=1.745(bits/symbol)

    5.考虑以下序列:

    ATGCTTAACGTGCTTAACCTGAAGCTTCCGCTGAAGAACCTG

    CTGAACCCGCTTAAGCTGAACCTTCTGAAGCTTAACCTGCTT

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

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

      解:观察可知,共有84个字母,其中A有21个,T有23个,G有16个,C有24个

    (a)p(A)=21/84=1/4    p(T)=23/84     p(G)=16/84=4/21    p(C)=24/84=2/7

         H(A)=1/4*log24+23/84*log2(84/23)+4/21*log2(21/4)+2/7*log2(7/2)=1.98(bits/symbol)

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

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

    解:

    #include<iostream>
    using namespace std;
    #include<cstdlib>
    #include<ctime>
    #include<iomanip>
    int main()
    {
    	int s,i,j;
    	char a[100][100];
    	srand(time(NULL));
    	cout<<setfill('0');
    	for(i=0;i<100;i++)
    	{
    		for(j=0;j<4;j++)
    		{
    			s=rand()%26;
    			a[i][j]=s+'a';
    		}
    		a[i][4]='';
    		cout<<setw(3)<<i+1<<" "<<a[i]<<"	";
    	}
    	return 0;
    }
    

      

    一个有意义的单词都没有

  • 相关阅读:
    oracle 调优3
    ifconfig找不到命令的帖子 精选
    执行计划中各字段各模块描述
    oracle统计信息
    oracle中 rownum与rowid的理
    触发器
    开园第一天
    Asp.net生成htm静态文件的两种途径
    避免刷新页面,自动跳回到页面顶部的办法
    ASP.NET二级域名站点共享Session状态
  • 原文地址:https://www.cnblogs.com/susu-boke/p/4770730.html
Copyright © 2020-2023  润新知