仿真程序说明文档
一 仿真程序说明
本程序的哈夫曼编码采用的是无记忆信源编码方式,对每个符号逐个编码的。
本程序包含五个m文件,main.m, probability.m, human.m, huencode.m和
hudecode.m。其中:
main.m包含主函数main(),通过调用所有其他函数,实现了对信源的哈夫曼编解码。
probability.m包含函数[alpha prob]=probability(seq),其中输入变量是seq,
即待编码的序列,信源;输出变量是alpha和 prob,alpha用于统计信源中出现的每个字
符,prob用于统计对应字符出现的概率。本函数用于统计信源中的字符和对应的概率。
human.m包含主函数[hu entropy avgl eciency
redundancy]=human(alpha,prob),其中输入变量是alpha和prob,alpha即信源中
出现的字符,prob即对应字符出现的概率;输出变量是hu,entropy,avgl和
redundancy,hu是个结构体,用于统计信源中的字符,及其出现的概率和哈夫曼编码,
entropy表示信源熵,,avgl表示哈夫曼编码的平均码长,eciency表示哈夫曼编码的
效率, redundancy表示哈夫曼编码的冗余度。本函数用于哈夫曼编码并计算编码的平均
码长和冗余度,同时计算信源熵
huencode.m包含函数enseq=huencode(huf,seq),其中输入变量是huf和
seq,huf即统计信源中的字符,及其出现的概率和哈夫曼编码,seq即信源序列;enseq
是输出变量,即对信源编码后的代码。本函数用于对信源进行哈夫曼编码。
hudecode.m包含函数deseq=huffdecode(huf,enseq)。其中输入变量是huf
和enseq,huf即统计信源字符,及其出现的概率和哈夫曼编码,enseq即信源编码后的
代码;deseq是输出变量,即对信源解码后的字符。本函数用于对信源进行哈夫曼解码。
二 结果分析
1,信源包含的字符及对应的概率和哈夫曼编码:
'M' :0.0060156 : '1111000'
'I' :0.0030078 : '11110100'
'T' :0.0036094 : '01011011'
' ' :0.1546 : '001'
'P' :0.0048125 : '00011001'
'r' :0.052737 : '1100'
'o' :0.059956 : '0111'
'f' :0.017245 : '000111'
'e' :0.090034 : '0000'
's' :0.049529 : '1110'
'C' :0.0026068 : '000110000'
'l' :0.028474 : '10100'
'a' :0.06537 : '0100'
'u' :0.01544 : '010111'
'd' :0.029477 : '01101'
'S' :0.0064167 : '1101010'