Huffuman实验

Huffuman编码实验原理

1. 统计n个信源消息符号,得到n个不同概率的信息符号

2. 将这n个信源信息符号按其概率大小依次排序:p(x1) ≥ p(x2)≥ …≥ p(xn)

3. 取两个概率最小的信息符号分别配以0和1两个码元,并将这两个概率相加作为一个新的信息符号的概率,和未分配的信息符号构成新的信息符号序列

4. 将剩余的信息符号,按概率大小重新进行排序

5. 重复步骤3,将排序后的最后两个小概论相加,相加和与其他概率再排序。

6. 如此反复重复n-2次,最后只剩下两个概率

7. 从最后一级开始,向前返回得到各个信源符号所对应的码元序列,即相应的码字,构成Huffuman编码字。编码结束

1. 选取一段不少于3000字的英文材料,统计各字符出现的次数,实现Huffman编码,以及对编码结果的解码

路径为:D:\matlab\Windows\test4Huffman\NeverGonnaGiveUp.txt

要求:

  1. 输出每个字符出现的次数和编码,并存储文件(Huffman.txt)。

这段MATLAB代码实现了哈夫曼编码的生成和字符出现次数统计。首先,使用fileread函数读取指定路径下的文本文件内容,并将其转换为ASCII码表示的数字数组。然后,使用unique函数获取所有不同的字符,并使用histcounts函数统计每个字符出现的次数。接着,将每个字符出现次数转换为出现概率,并使用huffmandict函数生成哈夫曼编码字典。最后,将每个字符的出现次数和哈夫曼编码写入文件中。

需要注意的是,这个代码是处理英文文本的,如果输入的文本是中文等其他语言的文本,需要进行适当的修改才能正确处理。

运行完生成

  1. 在Huffman编码后,英文文章编码结果保存到文件中(code.dat),编码结果必须是二进制形式,即0 1的信息用比特位表示,不能用字符‘0’和‘1’表示(*)。

这段MATLAB代码使用生成的哈夫曼编码对英文文章进行编码,并将编码结果写入二进制文件中。

首先,使用huffmanenco函数对数字数组numericText进行编码,dict为之前生成的哈夫曼编码字典。编码结果是一个由0和1组成的逻辑向量。接着,使用fwrite函数将编码结果以比特位作为单位写入名为code.dat的二进制文件中。最后,关闭文件句柄。

  1. 实现解码功能。

这段MATLAB代码对之前编码得到的结果进行解码,并检查解码结果是否与原文相同。

首先,使用huffmandeco函数对编码结果encoded进行解码,dict为之前生成的哈夫曼编码字典。解码结果是一个数字数组,与原文numericText相同。

接着,使用isequal函数比较解码结果decoded和原文numericText是否相等。如果相等,则输出"解码成功!";否则,输出"解码失败!"表示解码结果有误。

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值