电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

哈夫曼编码c实现

19页
  • 卖家[上传人]:M****1
  • 文档编号:470759500
  • 上传时间:2024-01-23
  • 文档格式:DOC
  • 文档大小:175KB
  • / 19 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、 中南大学信息论编码实验报告 专业班级:电子信息1002指导老师:赵颖姓名:付永军学号:0909100707 目录一.实验目的3二、实验内容3三、实验原理41.1使用matlab 实现香农码编码。41.2、使用matlab 实现Huffman 编码.72.1、使用C+实现香农码编码101)香农编码原理102)编码步骤102.2、使用C+实现Huffman 编码14四实验结果17一.实验目的 1. 掌握香农码和 Huffman 编码原理和过程。2. 熟悉 matlab 软件的基本操作,练习使用matlab 实现香农码和Huffman编码。3. 熟悉 C/C+语言,练习使用C/C+实现香农码和Huffman 编码。4. 应用 Huffman 编码实现文件的压缩和解压缩。二、实验内容1、使用matlab 实现香农码和Huffman 编码,并自己设计测试案例。2、使用CC+实现香农码和Huffman 编码,并自己设计测试案例。3、可以用任何开发工具和开发语言,尝试实现Huffman 编码应用在数据文件的压缩和解压缩中,并自己设计测试案例。三、实验原理1.1使用matlab 实现香农码编码。 编

      2、程方法:据课本上的介绍编码香农码的方法。首先,给定信源符号概率,要先判断信源符号概率是否满足概率分布,即各概率之和是否为1,如果不为1就没有继续进行编码的必要,虽然任可以正常编码,但编码失去了意义。其次,对信源符号概率进行从小到大的排序,以便进行下一步。从第一步就知道信源符号的个数n,于是构造一个nx4的零矩阵D,以便储存接下来运算的结果。把排好序的信源符号概率以列的形式赋给D的第一列。再次,做编码的第二步,求信源符号概率的累加概率(方法见程序),用来编写码字。接着求各信源符号概率对应的自信息量,用于求解码长k。然后,我们对刚求的自信息量对无穷方向取最小正整数,得到的最小正整数就是该信源符号所对应编码的码长k,有了码长,接下来就可以求解码字。最后,对所求到的累加概率求其二进制,取其小数点后的数,所取位数由该信源符号对应的码长决定,所用的步骤结束,依次得到各信源符号的香农编码。程序展现:clc;clear;A=0.4,0.3,0.1,0.09,0.07,0.04;A=fliplr(sort(A);%降序排列m,n=size(A);for i=1:n B(i,1)=A(i);%生成B的第1

      3、列end%生成B第2列的元素a=sum(B(:,1)/2;for k=1:n-1 if abs(sum(B(1:k,1)-a)=abs(sum(B(1:k+1,1)-a) break; endendfor i=1:n%生成B第2列的元素 if i=k B(i,2)=0; else B(i,2)=1; endend%生成第一次编码的结果END=B(:,2);END=sym(END);%生成第3列及以后几列的各元素j=3;while (j=0) p=1; while(p=n) x=B(p,j-1); for q=p:n if x=-1 break; else if B(q,j-1)=x y=1; continue; else y=0; break; end end end if y=1 q=q+1; end if q=p|q-p=1 B(p,j)=-1; else if q-p=2 B(p,j)=0; END(p)=char(END(p),0; B(q-1,j)=1; END(q-1)=char(END(q-1),1; else a=sum(B(p:q-1,1)/2; for k=p:q-

      4、2 if abs(sum(B(p:k,1)-a)=abs(sum(B(p:k+1,1)-a); break; end end for i=p:q-1 if i在输入的概率矩阵p正确的前提条件下,对p进行排序,并用矩阵L记录p排序之前各元素的顺序,然后将排序后的概率数组p的前两项,即概率最小的两个数加和,得到新的一组概率序列,重复以上过程,最后得到一个记录概率加和过程的矩阵p以及每次排序之前概率顺序的矩阵a。2新生成一个n-1行n列,并且每个元素含有n个字符的空白矩阵,然后进行huffman编码: 将c矩阵的第n-1行的第一和第二个元素分别令为0和1(表示在编码时,根节点之下的概率较小的元素后补0,概率较大的元素后补1,后面的编码都遵守这个原则) 然后对n-i-1的第一、二个元素进行编码,首先在矩阵a中第n-i行找到值为1所在的位置,然后在c矩阵中第n-i行中找到对应位置的编码(该编码即为第n-i-1行第一、二个元素的根节点),则矩阵c的第n-i行的第一、二个元素的n-1的字符为以上求得的编码值,根据之前的规则,第一个元素最后补0,第二个元素最后补1,则完成该行的第一二个元素的编码, 最

      5、后将该行的其他元素按照“矩阵c中第n-i行第j+1列的值等于对应于a矩阵中第n-i+1行中值为j+1的前面一个元素的位置在c矩阵中的编码值”的原则进行赋值,重复以上过程即可完成huffman编码。3计算信源熵和平均码长,其比值即为编码密码效率。程序展现p=input(please input a number:) %提示输入界面n=length(p);for i=1:n if p(i)0 fprintf(n The sum of the probabilities in huffman can more than 1!n); p=input(please input a number:) %如果输入的概率数组总和大于1,则重新输入概率数组end q=p;a=zeros(n-1,n); %生成一个n-1行n列的数组for i=1:n-1 q,l=sort(q) %对概率数组q进行从小至大的排序,并且用l数组返回一个数组,该数组表示概率数组q排序前的顺序编号 a(i,:)=l(1:n-i+1),zeros(1,i-1) %由数组l构建一个矩阵,该矩阵表明概率合并时的顺序,用于后面的编码 q

      6、=q(1)+q(2),q(3:n),1; %将排序后的概率数组q的前两项,即概率最小的两个数加和,得到新的一组概率序列end for i=1:n-1 c(i,1:n*n)=blanks(n*n); %生成一个n-1行n列,并且每个元素的的长度为n的空白数组,c矩阵用于进行huffman编码,并且在编码中与a矩阵有一定的对应关系end c(n-1,n)=0; %由于a矩阵的第n-1行的前两个元素为进行huffman编码加和运算时所得的最c(n-1,2*n)=1; 后两个概率,因此其值为0或1,在编码时设第n-1行的第一个空白字符为0,第二个空白字符1。for i=2:n-1 c(n-i,1:n-1)=c(n-i+1,n*(find(a(n-i+1,:)=1)-(n-2):n*(find(a(n-i+1,:)=1) %矩阵c的第n-i的第一个元素的n-1的字符赋值为对应于a矩阵中第n-i+1行中值为1的位置在c矩阵中的编码值 c(n-i,n)=0 %根据之前的规则,在分支的第一个元素最后补0 c(n-i,n+1:2*n-1)=c(n-i,1:n-1) %矩阵c的第n-i的第二个元素的n-1的字符与第n-i行的第一个元素的前n-1个符号相同,因为其根节点相同 c(n-i,2*n)=1 %根据之前的规则,在分支的第一个元素最后补1 for j=1:i-1 c(n-i,(j+1)*n+1:(j+2)*n)=c(n-i+1,n*(find(a(n-i+1,:)=

      《哈夫曼编码c实现》由会员M****1分享,可在线阅读,更多相关《哈夫曼编码c实现》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.