问题描述:利用哈夫曼编码进行信息通讯可以大大提高信道利用率,缩短信息传输时间,降低传输成本。
但是,这要求在发送端通过一个编码系统对待传数据预先编码;
在接收端将传来的数据进行译码(复原)。
对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编/译码系统。
试为这样的信息收发站写一个哈夫曼码的编译码系统。
基本要求:一个完整的系统应具有以下功能:(l)I:初始化(Initialization)。
从终端读入字符集大小n,及n个字符和m个权值,建立哈夫曼树,并将它存于文件hfmtree中。
(2)C:编码(Coding)。
利用已建好的哈夫曼树(如不在内存,则从文件hfmtree中读入),对文件tobetrans中的正文进行编码,然后将结果存入文件codefile中。
(3)D:编码(Decoding)。
利用已建好的哈夫曼树将文件codefile中的代码进行译码,结果存入文件textfile中。
(4)P:印代码文件(Print)。
将文件codefile以紧凑格式显示在终端上,每行50个代码。
同时将此字符方式的编码文件写入文件codeprint中。
(5)T:印哈夫曼树(Treeprinting)。
将已在内存中的哈夫曼树以直观的方式(树或凹入表方式)显示在终端上,同时将此字符方式的哈夫曼树写入文件treeprint中。
实现提示根据题目要求把程序划成5个模块,设计成菜单方式,每次执行一个模块后返回菜单。
除了初始化(I)过程外,在每次执行时都经过一次读取磁盘文件数据。
这是为了如果在程序执行后一直没有进行初始化(I)过程,为了能使后面的操作顺利进行,可以通过读取旧的数据来进行工作。
比如:如果程序的工作需要的字符集和权值数据是固定的,只要在安装程序时进行一次初始(I)化操作就可以了。
再在次运行程序时,不管进行那项操作都可以把需要的数据读入到内存。
算法分析本程序主要用到了三个算法。
(1)哈夫曼编码在初始化(I)的过程中间,要用输入的字符和权值建立哈夫曼树并求得哈夫曼编码。
先将输入的字符和权值存放到一个结构体数组中,建立哈夫曼树,将计算所的哈夫曼编码存储到另一个结构体数组中。
(2)串的匹配在编码(D)的过程中间,要对已经编码过的代码译码,可利用循环,将代码中的与哈夫曼编码的长度相同的串与这个哈夫曼编码比较,如果相等就回显并存入文件。
(3)二叉树的遍历在印哈夫曼树(T)的中,因为哈夫曼树也是二叉树,所以就要利用二叉树的先序遍历将哈夫曼树输出。
[测试数据]根据实验要求,在tobetrans.dat中输入"THISPROGRAMISMYFAVORITE",字符集和其频度如下:字符 __ A B C D E F G H I J K L M频度 186 64 23 22 32 103 21 15 47 57 1 5 32 20字符 N O P Q R S T U V W X Y Z 频度 20 56 19 2 50 51 55 30 10 11 2 21 2
2021/11/10 18:15:21 4KB 课程设计 c/c++ 哈夫曼树 编码
1
本书是一本大名鼎鼎的Python入门书,即使对计算机了解不多,没有学过编程的读者学习Python也适用。
这本书以习题的方式引导读者一步一步学习编程,从简单的打印不断讲到完整项目的实现,让初学者从基础的编程技术入手。
本书是基于Python3.6版本编写的。
本书结构非常简单,除“准备工作”之外,还包括52个习题,其中26个覆盖了输入/输出、变量和函数3个主题,另外26个覆盖了一些比较进阶的话题,如条件判断、循环、类和对象、代码测试及项目的实现等。
每一章的格式基本相同,以代码习题开始,按照说明编写代码,运行并检查结果,然后再做附加练习。
(论坛里面该书的资源基本上都是第三版的,即python2.7的版本,故第一次发资源,就分享一下作者基于python3.6的新版。
同时版本为kindle版,在kindle或pc上kindle阅读器看均可。
2020/3/14 9:04:42 14.39MB Python 编程 入门
1
1.16QAM调制解调;
2.512个子载波构成一个OFDM符号;
3.带循环前缀和循环后缀;
4.OFDM信号加窗(rcos);
5.OFDM信号功率谱以及发送接收误码率分析;
6AWGN信号
2018/9/22 3:11:14 4KB OFDM 16QAM调制解调 matlab仿真
1
vb读取电表数据,可同时读取几个电表,而且还是循环读取。
2020/3/10 12:04:19 3KB vb 串口 没几秒 同时读取
1
带手打书签高清版本书系统而深入地引见了现代数字信号处理的基础和一些广泛应用的算法。
全书共10章,分为四个部分。
第一部分包括第1章~第4章,引见了研究和学习现代数字信号处理的重要基础,包括随机信号模型、估计理论概要、最优滤波器理论、最优线性预测和最小二乘滤波,这些内容在各种信号处理的研究论文中被广泛使用,是研究信号处理的基础性知识;
第二部分包括第5章和第6章,详细讨论了利用二阶统计量进行信号分析和处理的两个重要应用方向——功率谱估计算法和自适应滤波算法;
第三部分为第7章和第8章,引见了高阶统计量和循环统计量及其应用,对于非高斯随机信号和非最小相位系统,高阶统计量和循环统计量是非常有效的工具;
第四部分包括第9章和第10章,是时频分析和小波变换原理及应用的概述,这部分材料构成对非平稳信号处理的一个导论。
空间阵列信号处理的一些初步内容则穿插在有关章节中,不单独成章。
本书在写作中,除注重内容的先进性和系统性外,也尽量做到有启发性、容易读懂、便于自学。
2015/11/21 4:57:46 8.3MB 信号
1
使用Python语言开发一个图书管理程序,实现如下图所示的图书的管理功能。
功能具体包括:新增、查看、删除、借出、归还和退出。
程序可参照以下步骤进行开发:(1)数据初始化使用文件保存图书信息;
每本图书的信息包含:图书编号、名称、能否可借的状态、借出的日期、借出的次数。
(2)查看图书信息使用for循环遍历显示每个图书的信息。
(3)新增图书信息向文件中存储新增图书的信息。
(4)删除图书信息按照输入的名称,删除指定图书信息;
删除借出状态的图书和不存在的图书时,都要给出相应提示。
(4)借出图书业务处理按照输入的名称,借出指定图书;
判断输入的日期能否在1-31之间;
若该图书已借出或没有该图书,都要给出相应提示。
(6)归还图书业务处理实现归还图书,并计算租金;
如果用户输入的日期大于31或者小于借出日期将提示用户重新输入;
如果归还未借出的图书、不存在的图书或者归还图书的时间不合理则分别给出相应提示。
(7)菜单切换
2020/10/6 14:37:47 266KB python
1
单按键节制ws2812b单色,变色,闪烁变色,rgb循环变色
2019/1/3 4:57:27 5KB arduin
1
利用循环队列来实现银行排队零碎,对进入队列的客户分为VIP和普通客户,其中VIP优先出队。
能实现的功能如下1.新客户排队等待服务2.客户离开排队服务3.查询当前客户前面还有几人4.查询截止目前总共办理多少客户注:每个功能都能显示当前排队情况
2021/2/27 13:51:13 257KB 循环队列 银行排队系统
1
从输入串的起始位置到最初位置,循环执行如下步骤。
如果待处理表(Agenda)为空,则找到下一个位置上的词,将该词对应的所有词类X附以(P_i〖,P〗_j)后放到待处理表中(X(P_i〖,P〗_j))。
其中,P_i〖,P〗_j分别是该词的起始位置和终止位置,j>i,P_j-P_i为该词的长度。
从Agenda中取出一个元素,其标志成分为X,位置跨度为(P_i〖,P〗_j)。
对于每条规则A→Xγ,将A→X·γ加入活动边集ActiveArc的(P_i〖,P〗_j)位置中,然后调用扩展弧子程序。
2020/3/13 8:40:37 56KB 线图句法分析
1
一、任务及要求任务:假设汽车尾部左右量测各有3个指示灯(用发光二极管模拟)1.汽车正常运行时指示灯全灭;
2.右转弯时,右侧3个指示灯按右循环顺序点亮;
.3.左转弯时,左侧3个指示灯按左循环顺序点亮;
4.临时刹车时所有指示灯同时闪烁。
要求:1.设计思路清晰,给出整体设计框图,画出整机原理图;
2.给出具体设计思路,设计各单元电路、电路器件;
3.总电路设计;
4.进行实验仿真调试,验证设计结果;
5.编写设计说明书;
6.所有图纸和说明书用计算机打印二、进度安排第一周:周一:课题内容引见和查找资料;
周二~周三:方案设计,电路仿真,周三下午检查设计方案及仿真结果;
周四~周日:周四上午领元器件;
安装、调试电路;
第二周:周一~周三:安装、调试电路;
周四:验收电路,收元器件,整理实验室,撰写设计报告,打印相关图纸;
周五:答辩,收设计报告。
2017/6/17 21:18:20 301KB 数电课设 汽车尾灯
1
共 850 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡