第二次作业 黄学才

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

3-2  利用程序huff_enc进行以下操作(在每种情况下,利用由被压缩图像生成的码本)。

(a) 对Sena、Sensin和Omaha图像时行编码。

答:(a)   Sena:压缩前 : 64.0 KB (65,536 字节)  —— 压缩后 : 56.1 KB (57,503 字节)     压缩比:88%

Sensin: 压缩前 : 64.0 KB (65,536 字节) —— 压缩后 : 60.2 KB (61,649 字节)    压缩比:94%

Omaha: 压缩前 :64.0 KB (65,536 字节) —— 压缩后 :56.1 KB (57,503 字节)     压缩比:89%

3-4  一个信源从符号集A={a1, a2, a3, a4, a5}中选择字母,概率为P(a1)=0.15,P(a2)=0.04,P(a3)=0.26,P(a4)=0.05,P(a5)=0.50。

(a)计算这个信源的熵。

(b)求这个信源的霍夫曼码。、

(c)求(b)中代码的平均长度及其冗余度。

  解:(a)这个信源的熵为:

H= -  P(a1)log2P(a1) - P(a2)log2P(a2) - P(a3)log2P(a3) - P(a4)log2P(a4) - P(a5)log2P(a5)

= - 0.15 * log2 (0.15) - 0.04 * log2 (0.04) - 0.26 * log2 (0.26) - 0.05 * log(0.05) - 0.5 * log2 (0.5)

=0.411+0.1856+0.5044+0.216+0.5

=1.817(bits)

(b)

答: 霍夫曼编码:a1   001

a2  0000

a3  01

a4  0001

a5  1

                 

(c)

L=P(a1)*l(a1)+P(a2)*l(a2)+P(a3)*l(a3)+P(a4)*l(a4)+P(a5)*l(a5)

=0.15*3+0.04*4+0.26*2+0.05*4+0.5*1

=1.83(bits)

冗余度为H-L=2.368-1.83=0.538

2-6. 在本书配套的数据集中有几个图像和语音文件。

(a)编写一段程序,计算其中一些图像和语音文件的一阶熵。

(b)选择一个图像文件,并计算其二阶熵。试解释一阶熵和二阶熵之间的差别。

(c)对于(b)中所用的图像文件,计算其相邻像素之差的熵。试解释你的发现。

答:

(a):

文件名 一阶熵 二阶熵 差分熵
SENA.IMG 6.834299  3.625204   3.856899 
SENSIN.IMG 7.317944  4.301673   4.541547
OMAHA.IMG 6.942426  4.488626  6.286834
EARTH.IMG 4.770801  2.568358   3.962697 
GABE.RAW 7.116338  6.654578  8.978236
BERK.RAW 7.151537  6.705169  8.976150 

(b).二阶熵都比一阶熵小

(c).像素之差的熵比一阶熵和二阶熵都大

时间: 2024-10-17 21:44:04

第二次作业 黄学才的相关文章

第三次作业 黄学才

一.参考书<数据压缩导论(第4版)>  Page 100          5, 6 5.给定如表4-9所示的概率模型,求出序列a1a1a3a2a3a1 的实值标签. 解:由上图可知, p(a1)=0.2 ,p(a2)=0.3  ,p(a3)=0.5 FX(0)=0,FX(1)=0.2 ,FX(2)=0.5  ,FX(3)=1.0, U(0)=1 ,L(0)=0 因为X(ai)=i,    所以  X(a1)=1,X(a2)=2,X(a3)=3 由公式,L(n)=L(n-1)+(U(n-1)-

第一次作业 黄学才

#include<iostream> using namespace std; #include<cstdlib> #include<iomanip> #include<ctime> int main() { int p,i,j; char m[100][100]; srand(time(NULL)); cout<<setfill('0'); for(i=0;i<100;i++) { for(j=0;j<4;j++) { p=rand

软工实践第二次作业-黄紫仪

1)Github项目地址 https://github.com/ziyi12345/shudu2.git 2)在开始实现程序之前,在下述PSP表格记录下你估计将在程序的各个模块的开发上耗费的时间 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 30 · Estimate · 估计这个任务需要多少时间 30 Development 开发 260 · Analysis · 需求分析 (包括学习新技术) 60

第二周作业-词频统计

本周作业是词频统计,编程具体要求如下: https://edu.cnblogs.com/campus/nenu/SWE2017FALL/homework/922 对实现功能进行简要的介绍: 功能一:小文件输入,为表明程序能跑.需要在控制台下输入命令,得到文件中不重复的总单词数.并对单词出现的次数进行排序输出. 功能二:支持命令行输入英文作品的文件名,亲自录入,输出显示不重复单词总数,并对出现频率最高的前10的单词进行输出 功能三:支持命令行输入存储有英文作品文件的目录名,批量统计词频. 功能四:

第二次作业: 二维数组

高级语言程序设计报告   实习题目 第二次作业: 二维数组 P228计算机双学位第8章实验题:学生成绩管理系统 l 在上次作业的基础上,改为每学生2门课,用二维数组编程实现相应功能,相应功能所有涉及分数的均需可以处理每门课程分数及每个学生课程总分. l 涉及到排序的,均需提供冒泡及选择两种排序方法,可增加菜单项. l 功能5中按学号查询学生排名及成绩,要求用折半法,为此你的学生数据可以多一点. l 数组中可以事先有数据(省却每次输入数据浪费时间),为此输入数据菜单可以改造为增加数据菜单. l 在

马哥linux 培训第二周作业

注意:第二周作业,请将以下题目整理在51cto博客当中,完成后请将对应的博文链接地址提交在答案栏中,提交格式如下:学号+姓名+博文链接地址eg:1+张三+http://mageedu.blog.51cto.com/4265610/1794420 本周作业内容:1.Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示. 文件管理的命令有cp.mv.rm 复制命令:cp 用法: cp [-adfilprsu] 来源文件(source) 目标文件(destination) cp [o

耿丹16-1第二次作业

-- Deadline: 2016-09-23 23:00 pm -- 作业内容:https://edu.cnblogs.com/campus/bjgygd/Sixteen-One/homework/85 -- 第二次作业总结: 1. 总共5位同学未按时提交,且目前未交. 2. 大部分同学都注意了代码的缩进格式,希望继续保持! 3. 希望同学们下节课作业可以使用博客中自带的代码编辑器,养成良好的代码编写风格! 周刘晋源同学已经开始使用了,特此提出表扬! 4. 大家学习了变量类型的定义,以后会遇到

2017秋-软件工程第二次作业

本周因为个人缘故,参加社团活动作业没能及时完成.对此我表示,做过就不后悔,至少我觉得生活是丰富多彩的,错过的时间就应该努力赶上!夜深人静的时候总是可以让人反省自己.本次作业我只实现了第一个功能和第二个功能的部分.对此我表示很不满,但是时间紧迫.个人能力有限,以至于自己没能让自己的软件看起来完美. 第二次作业的内容非常有趣,这也是我一直想做的一件事情,统计一篇文章里的字词.我知道自己的编程能力较差.距离完成提交时间很近,自己手写全部是不能及时按照约定提交的,于是就尝试借鉴前人的代码.第一晚的努力各

第二次作业总结

知识点: 1      printf----要输出的信息; 2变量定义的一般形式:类型名     变量名表: 类型名: int(整形)  float(单精度)  double(双精度) char(字符型) 任何变量都必须先定义后使用. 变量名尽量做到见名知义. 例如 int Celsius,fahr:  //定义两个整形变量 float x:               //定义一个单精度浮点数 double   area,length: //定义两个双精度浮点数. 3简单运算——算术运算和赋值