2014-10-06 46 views
0

在MATLAB中存储霍夫曼代码的最佳方式是什么? 例如:如何在matlab中以低音量存储霍夫曼码?

 letters = [1:6]; % Distinct symbols the data source can produce 
     p = [.5 .125 .125 .125 .0625 .0625]; % Probability distribution 

     [dict,avglen] = huffmandict(letters,p); % Get Huffman code. 
     sig = randsrc(1,20,[letters; p]) % Create data using p. 
     comp = huffmanenco(sig,dict) % Encode the data. 

-> save('file.mat','comp','dict'); 
-> clear all; 
-> load('file.mat'); 

     deco = huffmandeco(comp,dict) % Decode the encoded signal. 

但保存功能不低容量数据存储。 我已经使用dlmwrite功能,但存储量很高。 在其他技术中,如JPEG图像中的霍夫曼代码,如何完成存储?如您所知,霍夫曼代码用于JPEG图像压缩。 霍夫曼如何编码存储在磁盘上的[imwrite(mat,'mat.jpeg')]?

回答

1

一些事情。首先,您应该尝试创建更大的数据量。 20是一个非常低的数字,看看有什么区别(但你会看到它)。

然后,问题是数据类型。如果您查看名为comp的变量,Huffman编码的输出仅包含0和1,则为二进制。但是,在matlab中,您将它存储为double,因此使用32位来描述1位。

试,保存前,这样的:

comp=logical(comp); 

它应该做的伎俩;)

+0

thank.How我可以找到保存为JPEG图像压缩方法。 – omid 2014-10-07 05:23:18

+0

mm请问,你能重新表达这个问题吗?我不明白,对不起。你的意思是保存它?那么你不应该在代码中更改任何东西,只要将comp变量转换为逻辑就足以节省内存(请注意,已保存的归档文件有一些标题可能会使它们看起来更大)如果你想看到一个很大的差异,你应该创建一个500x500左右的信号) – 2014-10-07 09:31:26