第一次作业:
1-1 数据压缩的一个基本问题是“我们要压缩什么”,对此你是怎样理解的?
我对数据压缩的理解是在这个大数据的时代,数据量实在是太大,信息在传输的过程中过于缓慢,因此我们需要对数据进行压缩。
数据压缩我们要压缩的是信号空间,主要对象包括①物理空间②时间空间③电磁频段
1-2 数据压缩的另一个基本问题是“为什么进行压缩”,对此你又是怎样理解的?
我个人理解的是进行压缩,可以减少存储空间,提高其传输、存储和处理效率。
1-6 数据压缩技术是如何分类的?
数据压缩的分类繁多,没有确定的。一般步骤如下
原始数据→建模表达→模型参数→二次量化→熵编码→压缩码流
按一般方法数据压缩分为可逆压缩和不可逆压缩
1.4
2-1 用你的计算机上的压缩工具来压缩不同文件。研究原文件的大小和类型对于压缩文件与原文件大小之比的影响。
答:我在我的电脑上亲自体验了一下压缩文件,得出的结果是不同的文件受影响不一样,有一些文件压缩后大小没有变化,一些文件压缩后确实变小了。
2-2 从一本通俗杂志中摘录几段文字,并删除所有不会影响理解的文字,实现压缩。例如,在“This is the dog that belongs to my friend”中,删除is、the、that和to之后,仍然能传递相同的意思。用被删除的单词数与原文本的总单词数之比来衡量文本中的冗余度。用一本技术期刊中的文字来重复这一试验。对于摘自不同来源的文字,我们能否就其冗余度做出定量论述?
答:不能就其冗余度做出定量论述。对于摘自不同来源的文字,重复度不一样。有一些单词会重复出现多次。
第二次作业:
3、给定符号集A={a1,a2,a3,a4},求一下条件下的一阶熵:
(a)P(a1)=P(a2)=P(a3)=P(a4)=1/4
解:H= P(a1)㏒2P(a1)+P(a2)㏒2P(a2)+P(a3)㏒2P(a3)+P(a4)㏒2P(a4)
= -4*1/4㏒2 (1/4)
= 2 bits
(b)P(a1)=1/2 , P(a2)=1/4 , P(a3)=P(a4)=1/8
解:H= P(a1)㏒2P(a1)+P(a2)㏒2P(a2)+P(a3)㏒2P(a3)+P(a4)㏒2P(a4)
= -1/2㏒2 (1/2)-1/4㏒2 (1/4)-1/8㏒2 (1/8)-1/8㏒2 (1/8)
= 1.7 bits
(c)P(a1)=0.505 , P(a2)=1/4 , P(a3)=1/4 , P(a4)=0.12
解: H= P(a1)㏒2P(a1)+P(a2)㏒2P(a2)+P(a3)㏒2P(a3)+P(a4)㏒2P(a4)
= -0.505㏒2 0.505-1/4㏒2 (1/4)-1/4㏒2 (1/4)-0.12㏒2 0.12
≈ 1.3 bits
5、考虑以下序列:
ATGCTTAACGTGCTTAACCTGAAGCTTCCGCTGAAGAACCTG
CTGAACCCGCTTAAGCTTAAGCTGAACCTTCTGAACCTGCTT
(a)根据此序列估计个概率值,并计算这一序列的一阶、二阶、三阶和四阶熵。
解:由题意可知此序列共有字母84个,其中A出现21次,T出现23次,G出现16次,C出现24次,
P(A)=21/84=1/4, P(T)=23/84,P(G)=16/84=4/21,P(C)=24/84=2/7.
H=-1/4*log2(1/4)-23/84*log2(23/84)-4/21*log2(4/21)-2/7*log2(2/7)
=1.98 bits
(b)根据这些熵,能否推断此序列具有什么样的结构?
解:由题意可知,共有四个字符集,由求出一阶熵,二阶熵,三阶熵的值,我们可以知道等概率时,熵最大。
7、做一个实验,看看一个模型能够多么准确地描述一个信源。
(a)编写一段程序,从包括26个字母的符号集{a,b,...,z}中随机选择字母,组成100个四字母单词,这些单词中有多少是有意义的?
/*******************
程序名:wang
作者:王红英
日期:2015年9月2日
*********************/
#include<stdio.h>
#include<stdlib.h>
int main()
{
int m,n;
for(m=0;m<100;m++)
{
for(n=0;n<4;n++)
{
putchar(rand()%1?65+rand()%26:60+rand()%26);
}
putchar(' ');
}
return 0;
}