h_code
2016-01-14 11:12:21 0 举报
matlab
作者其他创作
大纲/内容
开始
是
利用randint函数模拟两次掷骰子结果,并将和存储在矩阵c中
利用tabulate函数统计c中各元素出现概率,整理为概率矩阵p
每次循环找到最小概率及次小概率
得到编码表
根据哈夫曼树从根结点自上向下寻找左孩子/右孩子,直到找到叶子节点。将该叶子节点的值用矩阵decode_huffman存储。
否
模拟信源输出
构造行数为2n-1列数为4的哈夫曼数矩阵tree,四列分别存放概率,双亲结点和左右孩子结点,并进行初始化
记录双亲结点及左右孩子结点,合并最小概率及次小概率并记录在tree矩阵及tree1矩阵中
结束
哈夫曼编码
huffman_code是否读取完
利用min函数返回tree1矩阵中的最小概率值,每找到一个即删除该记录
依次读取huffman_code中的01数据
将信源输出与编码表一一对应,得到编码结果huffman_code
哈夫曼树是否建成?
计算信源熵,统计平均码长,得到编码效率
建立哈夫曼树
tree1矩阵用tree函数初始化
对哈夫曼树的所有叶子节点分别自下而上遍历寻找双亲结点,并记录对应编码'0'或‘1’,直到找到根结点。
哈夫曼译码
0 条评论
下一页