- 数据压缩的基本问题是“要压什么?” 数据压缩主要针对的是那些会产生数据冗余的数据
- “为什么要进行压缩?” 数据压缩可以减少对资源的浪费,产生不必要冗余,比如,在制作视频是有一些部分很相似,就可以把它压缩一下
- 数据压缩如何进行压缩 1. 数据压缩根据是否有数据丢失分为:有损压缩和无损压缩 2. 数据压缩根据能不能同时进行分为:即时压缩和非即时压缩 3. 数据压缩根据压缩数据不同分为:数据压缩和文件压缩
-
4. 1
文件类型
压缩前
压缩后
压缩比
音频
10.5M
10.2M
0.971
视频
1.78MB
1.74MB
0.977
图片
5.81KB
5.05KB
0.86
从上可知,图片的压缩比要小于其他两种文件压缩,从而可知图片压缩后的文件与压缩前的文件有明显区别
- 4.2 在压缩文件时,不能做定量分析,因为不同的文件在压缩时的压缩比例不同,虽然说压缩是解决冗余问题,但不同的文件信息中冗余度是不同的,而且在文件信息中除了冗余外,还有部分信息是重复出现的,但在压缩时有可能会造成信息的缺失,所以压缩时是不能作定量分析的。
- 参考书
3(a) 一阶熵为:(-log2(1/4))*(1/4)*4=2; 3(b)
一阶熵为:(-log2(1/2))*(1/2)+(-log2(1/4))*(1/4)+(-log2(1/8))*(1/8)*2=7/4 ; 3(c)
一阶熵为:(-log2(0.505))*(0.505)+(-log2(1/4))*(1/4)+(-log2(1/8))*(1/8)+(-log2(0.12))*(0.12)=1.375;
-
5(a) p(A)=21/84=0.25 P(T)=23/84=0.27 P(G)=16/84=0.19 P(C)=24/84=0.28;
一阶熵为:(-log2(0.25))*(0.25)+(-log2(0.27))*(0.27)+(-log2(0.19))*(0.19)+(-log2(0.28))*(0.28)= 0.5 + 0.51+ 0.46+ 0.51=1.98
-
7(a)
#include<stdio.h> #include<stdlib.h> void main() { int j,i; for(j=0;j<100;j++) { for(i=0;i<4;i++) { putchar(rand()%1?65+rand()%26:97+rand()%26); } putchar(' '); } }
从出来的结果可以看出,出来的大多数单词都是没有意义的;