如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
姓名:江西理工大学实验报告纸><>><>><>第页/共NUMPAGES4页江西理工大学江西理工大学实验报告纸第页/共NUMPAGES4页数字图像处理实验报告实验名称实验四图像的哈夫曼编码日期2013年11月19日专业班级信安101班实验人袁斌学号22一、实验目的掌握哈夫曼编码算法的基本原理;要求对屏幕输入的信符概率向量进行哈夫曼编码。二、实验内容对屏幕输入的信符概率向量例如‘[0.40.20.160.120.060.040.02]’进行哈夫曼编码,计算计算信源的熵,哈夫曼编码的平均码字长及其编码效率,显示哈夫曼编码与相应计算结果.三、实验步骤和设计思想通过哈夫曼编码来计算信源的熵,用Matlab来模拟算法的过程。霍夫曼编码的步骤:1)根据待编码的符号串,统计各个符号的概率;2)根据符号的概率统计特征,构建霍夫曼编码表,即计算每个符号的编码结果;3)用得到的编码表对符号序列进行编码。四、程序清单clcclearallp=input('请输入信符的概率向量:');n=length(p);q=p;a=zeros(n-1,n);fori=1:n-1fprintf('第%d次排序\n',i);[q,l]=sort(q)%qa(i,:)=[l(1:n-i+1),zeros(1,i-1)]fprintf('\n第%d次排序后合并生成的数据',i);q=[q(1)+q(2),q(3:n),1]endfori=1:n-1c(i,1:n*n)=blanks(n*n);endc(n-1,n)='1';c(n-1,2*n)='0';fori=2:n-1c(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';c(n-i,n+1:2*n-1)=c(n-i,1:n-1);c(n-i,2*n)='0';forj=1:i-1c(n-i,(j+1)*n+1:(j+2)*n)=c(n-i+1,n*(find(a(n-i+1,:)==j+1)-1)+1:n*(find(a(n-i+1,:)==j+1)))endendfori=1:nh(i,1:n)=c(1,n*(find(a(1,:)==i)-1)+1:find(a(1,:)==i)*n);ll(i)=length(find(abs(h(i,:)~=32)));endLavg=sum(p.*ll)fprintf('\nhuffmancode:\n');hHA=(-1)*sum(p.*log2(p));fprintf('\nhuffmaneffciency:\n');t=HA/Lavg五、实验调试记录六、实验结果及其分析请输入信符的概率向量:[0.40.20.160.120.060.040.02]第1次排序q=0.02000.04000.06000.12000.16000.20000.4000l=7654321a=765432100000000000000000000000000000000000第1次排序后合并生成的数据q=0.06000.06000.12000.16000.20000.40001.0000第2次排序q=Columns1through60.06000.06000.12000.16000.20000.4000Column71.0000l=1234567a=765432112345600000000000000000000000000000第2次排序后合并生成的数据q=Columns1through60.12000.12000.16000.20000.40001.0000Column71.0000第3次排序q=Columns1through60.12000.12000.16000.20000.40001.0000Column71.0000l=1234567a=765432112345601234500000000000000000000000第3次排序后合并生成的数据q=Columns1through60.24000.16000.20000.40001.00001.0000Column71.0000第4次排序q=Columns1through60.16000.20000.24000.40001.00001.0000Column71.0000l=2314567a=76543211234560123450023140000000000