matlab实现数据压缩,【Matlab】Huffman编码如何实现数据压缩

本文详细介绍了如何在MATLAB中使用Huffman编码进行数据压缩,包括编码、解码过程以及如何处理编码结果以提高压缩比。通过示例展示了对数值串进行编码、解码,并探讨了在MATLAB中数据类型对压缩效果的影响。
摘要由CSDN通过智能技术生成

Huffman编码可用于数据压缩已经是人所共知的事实。但是具体说到如何实现编码,至少作者在实验中是遇到问题了的!

对数值串:

[22006 22006 44004 87999 175989] --1*5

进行huffman编码,下面左列是要编码的数值,右列是编码结果。

22006    [1]

44004    [0 0 1]

87999    [0 0 0]

175989  [0 1]

则原数值列的编码结果为:

[1 1 0 0 1 0 0 0 0 1] -- 1*10

到这里为止应该没什么问题!

在进行压缩比的计算时,必须考虑Matlab(或者其他你处理数据的平台)中数据类型的问题。

比如:【数据类型】【占用存储】【数值范围】

uint8        8bit          0~255

uint16      16bit        0~65525

int8          8bit          -128~127

int16        16bit        -32768~32767

!matlab中是没有bit类型的,也就是说,即使是编码结果(0-1串),最少也需要占用10*sizeof(uint8) = 80bit.

而原数据需要的存储空间为5*sizeof(uint16) = 80bit. 可以看到:完全没有实现数据压缩。

当然,作为Huffman编码结果的0-1串如果能实现按位存储,那么毫无疑问地会节省存储空间&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值