太原理工多媒体技术实验报告.docxVIP

  • 10
  • 0
  • 约1.74万字
  • 约 16页
  • 2019-09-27 发布于广东
  • 举报
《多媒体技术实验报告》 学生姓名 学 号 学 院 专业班级 实验一 Huffman编码算法的实现 —、实验目的 1、 学习Matlab软件的使用和编程; 2、 进一步深入理解Huffman编码算法的原理; 二、实验内容 用Mat 1 ab实现Huffman编码程序的文本压缩和解压; 三.实验原理 1、Huffman编码程序的文本压缩和解压 读信息与概率计算(fhstart. m) 哈夫曼树图阶段(fhtreel.m) 哈夫曼代码生成模块(fhcode. m) 四、Huffman编码的Matlab源程序及运行结果 1、用Mat lab实现Huffman编码程序的文本压缩和解压 clc; clear all; k=input(,Enter the file name k=input(Enter the file name : fid = fopen(k/r); % fid=fopen( C:\Users\ldg\Desktop\2011 教案\Huffman\Test files/r) F = fread(fid); img = char(F3; mx 二255; [xy z]=size(img); h(l:mx)=0; disp(Histogram building phase started....1); for i=l:y iy=img(i); val=double(iy); h(val)=h(val)+l; end % end disp(Probabil让y calculating phase started...); i=l:mx p(i)=h(i)/(x*y); j=l; for i=l:mx 讦(P(i)?=0) lst(j+l)=p(i); j=j+2; end end [tt/mx]=size(lst); disp(sorting phase started....1); for i=2:2:mx for j=i:2:mx 讦(lst(i)lst(j)) templ=lst(i-l); temp2=lst(i); lst(i-l)=lst(j-l); lst(i)=lst(j); lst(j-l)=templ; lst(j)=temp2; end end end disp(Building Huffman Tree.....); fhtreel(lstjmg); %huf fma n画树阶段 function HT=fhtreel(lst,img) [p,q]二 size(lst); [tt/mx]=size(lst); szl=q; xx=l; kl=0; prt=0; while (kll) kl 二 lst(2)+lst(4); prt=prt-l; Istnfxx)=lst(l); lstn(xx+l)=0; lstn(xx+2)=prt; xx=xx+3; lstn(xx)=lst(3); lstn(xx+l)=l; lstn(xx+2)=prt; xx=xx+3; lst(l)=prt; 1st ⑵二 kl; 1st ⑶二 99; 1st ⑷二 99; for i=2:2:mx for j=i:2:mx if(lst(i)lst(j)) templ=lstfi-l); temp2=lst(i); lst(i-l)=lst(j-l); lstu)=lst(j); lstn-l)=templ; lst(j)=temp2; end end end end lstnfxx)=lst(l); lstnfxx+ll=lstf21; lstn(xx+2j=lst(3); dispfCalling fhcode …) fhcodeflstnjmg) %哈夫星代码星成模块 function HC=fhcode(lstnJmg) dispfCode generating phase entered...1); jn]=size(lstn); ntt=ln-l; [im/in]=size(img); t=0; idd=input(fEnter destination huffman code file name : 7s); tab=input(,Enter the Huff Table name (for decoding purpose): 7sJ; tb = fopen(tab/w+f); idd=fopen(idd/w+,); fstl=u; fst2=u; ed=0; din=0; dispfBuilding Huffman Table J; for i=l:in k=img(i); ftemp=img(i); a=0; for j=l:3:ln if(lstn(j+2)==99) break;J; br

文档评论(0)

1亿VIP精品文档

相关文档