您好,欢迎访问三七文档
郑州轻工业学院电子信息工程哈夫曼编解码实验教师:闫艳霞地点:西三楼405联系电话:13513713605哈夫曼编解码实验一、实验目的1.掌握哈夫曼编码的原理与步骤2.练习matlab哈夫曼编解码函数的调用二、实验原理见实验指导书。哈夫曼编解码实验三、实验内容05.015.015.025.04.054321xxxxxPX02.018.03.015.005.02.01.07654321xxxxxxxPX(1)手工哈夫曼编码(字典)信源1:信源2:(2)调用matlab哈夫曼编码函数编码信源概率空间同上,信源序列长度为100。哈夫曼编解码实验四、函数的使用方法(1)randsrc函数功能:产生一个随机字符串。使用方法:randsrc(m,n,[symbols;p])该函数表示产生一个m行n列的一个矩阵,且该矩阵中的符号为symbols符号空间中的符号,各符号的概率分布满足概率空间p。哈夫曼编解码实验四、函数的使用方法333343334343333334如1,out=randsrc(2,3,[34;0.80.2])则:out=out=out=哈夫曼编解码实验四、函数的使用方法即产生一个1行100列的矩阵,且矩阵中的符号为symbols符号空间中的符号,各符号的概率分布满足概率空间P。如2:symbols=[1:6];p=[0.50.1250.1250.1250.06250.0625];actualsig=randsrc(1,100,[symbols;p]);程序运行结果:actualsig=1123214653126456123……哈夫曼编解码实验四、函数的使用方法(2)huffmandict函数功能:生成哈夫曼字典使用方法:[dict,avglen]=huffmandict(symbols,p)该函数表示按照symbols中的字符和p中的概率生成一个字典dict,并将字典的中字符串的平均长度返回到avglen。哈夫曼编解码实验]41[]6[]41[]5[]31[]4[]31[]3[]31[]2[]0[]1[doubledoubledoubledoubledoublesymbols=[1:6]p=[0.50.1250.1250.1250.06250.0625][dict,avglen]=huffmandict(symbols,p)dict=例如:avglen=2.1250哈夫曼编解码实验temp=dict;fori=1:length(temp);length(temp):字典的行数temp{i,2}=num2str(temp{i,2})endtemp'1010']6['1011']5['110']4['111']3['100']2['0']1[则程序运行结果:temp=若要想看字典中的内容,可加以下程序:哈夫曼编解码实验'1010']6['1011']5['110']4['111']3['100']2['0']1[程序运行结果temp=]41[]6[]41[]5[]31[]4[]31[]3[]31[]2[]0[]1[doubledoubledoubledoubledoubledict=temp=dict;fori=1:length(temp);length(temp):字典的行数temp{i,2}=num2str(temp{i,2})endtemp哈夫曼编解码实验四、函数的使用方法(3)huffmanenco函数功能:进行哈夫曼编码使用方法:comp=huffmanenco(actualsig,dict)表示将actualsig序列按照dict字典进行哈夫曼编码。例如:symbols=[1:6]p=[0.50.1250.1250.1250.06250.0625][dict,avglen]=huffmandict(symbols,p)actualsig=randsrc(1,100;[symbols;p])comp=huffmanenco(actualsig,dict)哈夫曼编解码实验四、函数的使用方法(4)huffmandeco函数功能:进行哈夫曼解码使用方法:dsig=huffmandeco(comp,dict)表示将将comp码字按照dict字典进行哈夫曼解码。
本文标题:哈夫曼编解码实验
链接地址:https://www.777doc.com/doc-5890856 .html