用 Matlab 进行哈弗曼(Haffman)编码?

用 Matlab 进行哈弗曼(Haffman)编码?,第1张

Matlab自带Huffman函数(ps:你拼写错了)

huffmandeco Huffman decoder

huffmandict Generate Huffman code dictionary for a source with known probability model

huffmanenco Huffman encoder

密凳乎悉码生成:枣乎

symbols = [1 2 3]% Data symbols

p = [0.1 0.1 0.8]% Probability of each data symbol

dict = huffmandict(symbols,p) % Create the dictionary.

dict{1,:} % Show one row of the dictionary.

加密解顷纯密:

sig = repmat([3 3 1 3 3 3 3 3 2 3],1,50)% Data to encode

symbols = [1 2 3]% Distinct data symbols appearing in sig

p = [0.1 0.1 0.8]% Probability of each data symbol

dict = huffmandict(symbols,p)% Create the dictionary.

hcode = huffmanenco(sig,dict)% Encode the data.

dhsig = huffmandeco(hcode,dict)% Decode the code.

如果你是基于特定一篇英文文本编厅顷搭码,那就要自己构建huffman coding table, 也就是先计算每个字母出现的频率,然后对每个字母编码;如果你已经有huffman coding table,那就直接编码。

table也需要同时传送,不只是传送编码。

解码的时候扮拿按照table依乎差次查询即可。

没用过,但是检查,皮中芦matlab程序自带huffmancoding基本上你需要

1。测试图像灰度(SIG)找出来,

2,然后统计灰度分布(p),

3。然后生成一个字典(字典),

4。然后就可以直接使用huffmanenco编码,

5。然后huffmandeco恢复。

奇怪的是不是无损压缩哈夫曼编码它,为什么会出现损失呢?等待丹尼尔回答

看看下面的例子:

SIG = repmat([3 3 1 3 3 3 3 3 2 3],1,50)%的数据来编码

符号= [1 2 3]%不培贺同的数据码元出现在SIG

p值= [0.1 0.1 0.8]的每个数据符号的%概率

字典= huffmandict(码元,p)的%创建

hcode = huffmanenco字典(SIG,字典)。%编码

dhsig = huffmandeco数据(hcode,字典)%解码的代燃带码。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12397332.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存