ImageVerifierCode 换一换
格式:DOC , 页数:8 ,大小:73KB ,
资源ID:10920415      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-10920415.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(信息论实验报告2信源编码.doc)为本站会员(精品资料)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

信息论实验报告2信源编码.doc

1、辽宁工程技术大学上机实验报告实验名称 信源编码院系姓名实验目的简述本次实验目的: 1、 理解并掌握香农编码2、 理解并掌握费诺编码3、 理解并掌握霍夫曼编码实验准备你为本次实验做了哪些准备: 认真阅读信息论教材,熟悉三种编码的原理以及相应的 MATLAB 函数指令实验进度 本次共有 6 个练习,完成 6 实验总结日本次实验的收获、体会、经验、问题和教训:1、香农编码 Matlab 源码function W,L,q=shannon(p) if (length(find(p10e-10) error(Not a prob.vector,component do not add up to 1);

2、end n=length(p); x=1:n;p,x=array(p,x);% 1)排序l=ceil(-log2(p); % 2)计算代码组长度 lP(1)=0;n=length(p);%3)计算累加概率 Pfor i=2:n P(i)=P(i-1)+p(i-1); endfor i=1:n % 4)求得二进制代码组 Wfor j=1:l(i)temp(i,j)=floor(P(i)*2); P(i)=P(i)*2-temp(i,j); endendfor i=1:nfor j=1:l(i)成绩if (temp(i,j)=0); W(i,j)=48; else W(i,j)=49; enden

3、dendL=sum(p.*l); % 计算平均码字长度 H=entropy(p,2); % 计算信源熵 q=H/L; % 计算编码效率for i=1:n Bi=i; endn,m=size(W);TEMP=32*ones(n,6);W=W,TEMP;W=W;n,m=size(W);W=reshape(W,1,n*m);W=sprintf(%s, W);s0=很好!输入正确,编码结果如下:;s1=Shannon 编码所得码字 W:;s2=Shannon 编码平均码字长度 L:; s3=Shannon 编码的编码效率 q:;disp(s0);disp(s1),disp(B),disp(W);dis

4、p(s2),disp(L);disp(s3),disp(q);function H=entropy(P,r)if (length(find(P10e-10) error(Not a prob.vector,component do not add up to 1); end H=(sum(-P.*log2(P)/(log2(r)+eps);2、香农编码数值试验算例单符号离散无记忆信源=)X( p 0.5 1,0.5 2,0.5a6a43a1p=0.25,0.25,0.2,0.15,0.1,0.05;W,L,q=shannon(p)很好!输入正确,编码结果如下:Shannon 编码所得码字 W:

5、1 2 3 4 5 600 01 100 101 1101 11110 Shannon 编码平均码字长度 L:2.7000Shannon 编码的编码效率 q:0.8975W =00 01 100 101 1101 11110 L =2.7000q =0.89753、费诺编码 Matlab 源码(1)编写 M 文件 compare.mfunctionnext_P,code_num,next_index=compare(current_P,current_index)n=length(current_P);add(1)=current_P(1);for i=2:n % 1)求概率的依次累加和add

6、(i)=0; add(i)=add(i-1)+current_P(i); ends=add(n); % 2)求概率和最接近的两小组for i=1:n temp(i)=abs(s-2*add(i); endc,k=min(temp);if (current_index10e-10) error(Not a prob.vector,component do not add up to 1) end n=length(P); x=1:n;% 1)排序P,x=array(P,x);for i=1:ncurrent_index=i;j=1;current_P=P;while 1 next_P,code_

7、num,next_index=compare(current_P,current_index);current_index=next_index;current_P=next_P;W(i,j)=code_num; j=j+1;if (length(current_P)=1) break; endl(i)=length(find(abs(W(i,:) =0);end % 得到各码字的长度L=sum(P.*l); % 计算平均码字长度H=entropy(P,2); % 计算信源熵q=H/L; % 计算编码效率for i=1:n Bi=i; endn,m=size(W);TEMP=32*ones(n

8、,5);W=W,TEMP;W=W;n,m=size(W);W=reshape(W,1,n*m);W=sprintf(%s, W);s0=很好!输入正确,编码结果如下:;s1=Fano 编码所得码字 W:;s2=Fano 编码平均码字长度 L:;s3=Fano 编码的编码效率 q:;disp(s0);disp(s1),disp(B),disp(W);disp(s2),disp(L);disp(s3),disp(q); function H=entropy(P,r)if (length(find(P10e-10) error(Not a prob.vector,component do not a

9、dd up to 1); end H=(sum(-P.*log2(P)/(log2(r)+eps);4、费诺编码数值试验算例单符号离散无记忆信源=)X( p 1/6, ,1/6, 1/8, 1/4, a87,,a5a43a2P=1/4,1/4,1/8,1/8,1/16,1/16,1/16,1/16;W,L,q=fano(P)很好!输入正确,编码结果如下:Fano 编码所得码字 W:1 2 3 4 5 6 7 800 01 100 101 1100 1101 1110 1111 Fano 编码平均码字长度 L:2.7500Fano 编码的编码效率 q:1.0000W =00 01 100 101

10、 1100 1101 1110 1111 L =2.7500q =1.00005、霍夫曼编码 Matlab 源码(1)编写 M 文件 huffman.mfunction W,L,q=huffman(P) if (length(find(P10e-10) error(Not a prob.vector,component do not add up to 1) end n=length(P); % 计算输入元素个数p=P; mark=zeros(n-1,n); % mark 为 n-1 行、n 列矩阵,用来记录每行最小两概率叠加后概率排列次序% 1) 确定概率大小值的排列,得到 mark 矩阵。

11、for i=1:n-1 p,num=sort(p); mark(i,:)=num(1:n-i+1),zeros(1,i-1); p=p(1)+p(2),p(3:n),1; end % 2) 生成一个 n-1 行、n1(nn)列矩阵 table,每行可看做 n 个段,% 每段长为 n,记录一个码字(每个码字的长度不会超过 n) 。 for i=1:n-1 table(i,:)=blanks(n*n); end % 3) 计算各个元素码字,循环 n-2 次,决定矩阵 table% 从倒数第二行开始到第一行的每段的码字值,到编码表格 tabletable(n-1,n)=1;table(n-1,2*n

12、)=0; for i=2:n-1 table(n-i,1:n-1)=table(n-i+1,n*(find(mark(n-i+1,:)=1). -(n-2):n*(find(mark(n-i+1,:)=1); % 按 mark 的记录依次赋值table(n-i,n)=1;table(n-i,n+1:2*n-1)=table(n-i,1:n-1); table(n-i,2*n)=0; endfor j=1:i-1 table(n-i,(j+1)*n+1:(j+2)*n)=table(n-i+1,. n*(find(mark(n-i+1,:)=j+1)-1)+1:n*find(mark(n-i+1

13、,:)=j+1); end % 4)得到编码后的码字for i=1:n W(i,1:n)=table(1,n*(find(mark(1,:)=i)-1)+1:find(mark(1,:)=i)*n); l(i)=length(find(abs(W(i,:) =32); end L=sum(P.*l); % 计算平均码字长度H=entropy(P,2); % 计算信源熵q=H/L; % 计算编码效率for i=1:n Bi=i; endm,n=size(W);TEMP=blanks(m);W=W,TEMP,TEMP,TEMP;m,n=size(W);W=reshape(W,1,m*n);s0=很

14、好!输入正确,编码结果如下:;s1=Huffman 编码所得码字 W:;s2=Huffman 编码平均码字长度 L:; s3=Huffman 编码的编码效率 q:;disp(s0);disp(s1),disp(B),disp(W);disp(s2),disp(L);disp(s3),disp(q); function H=entropy(P,r)if (length(find(P10e-10) error(Not a prob.vector,component do not add up to 1); end H=(sum(-P.*log2(P)/(log2(r)+eps);(2)编写 M 文

15、件 huffman_better.mfunction W,L,V,q=huffman_better(P) if (length(find(P10e-10) error(Not a prob.vector,component do not add up to 1) end n=length(P);p=P; mark=zeros(n-1,n); t=1;for i=1:n-1 p,num=sort(p); % 对输入元素排序并纪录if (i=1)if (count=0) k=max(a(t,:);for s=count:-1:1num(k-s)= num(k-s+1); endnum(k)=1;e

16、ndt=t+1;endmark(i,:)=num(1:n-i+1),zeros(1,i-1); p=p(1)+p(2),p(3:n),1;count=0; % 用于计数for j=2:n-iif (p(1)=p(j) % 判断 p 中是否有与求和后的新项相等的项count=count+1; a(t,count)=j; endendend % 2) 生成一个 n-1 行、n1(nn)列矩阵 table,每行可看做 n 个段,% 每段长为 n,记录一个码字(每个码字的长度不会超过 n) 。 for i=1:n-1 table(i,:)=blanks(n*n); end % 3) 计算各个元素码字,

17、循环 n-2 次,决定矩阵 table% 从倒数第二行开始到第一行的每段的码字值,到编码表格 tabletable(n-1,n)=1; table(n-1,2*n)=0; for i=2:n-1 table(n-i,1:n-1)=table(n-i+1,n*(find(mark(n-i+1,:)=1). -(n-2):n*(find(mark(n-i+1,:)=1); % 按 mark 的记录依次赋值table(n-i,n)=1;table(n-i,n+1:2*n-1)=table(n-i,1:n-1); table(n-i,2*n)=0; for j=1:i-1 table(n-i,(j+1

18、)*n+1:(j+2)*n)=table(n-i+1,. n*(find(mark(n-i+1,:)=j+1)-1)+1:n*find(mark(n-i+1,:)=j+1); end end % 4)得到编码后的码字for i=1:n W(i,1:n)=table(1,n*(find(mark(1,:)=i)-1)+1:find(mark(1,:)=i)*n); l(i)=length(find(abs(W(i,:)=32); end L=sum(P.*l); H=entropy(P,2); % 计算信源熵V=sum(P.*(l-L).2);q=H/L; % 计算编码效率for i=1:n B

19、i=i; endm,n=size(W);TEMP=blanks(m);W=W,TEMP,TEMP,TEMP;m,n=size(W);W=reshape(W,1,m*n);s0=很好!输入正确,编码结果如下:;s1=Huffman 编码所得码字 W:;s2=Huffman 编码平均码字长度 L:;s3=Huffman 编码所得码字 W 的方差 V:;s4=Huffman 编码的编码效率 q:;disp(s0);disp(s1),disp(B),disp(W);disp(s2),disp(L);disp(s3),disp(V); disp(s4),disp(q)6、霍夫曼编码数值试验算例=)X(p 0.1 ,0.2,0.4a54a3a1P=0.4,0.2,0.2,0.1,0.1;W,L,q=huffman(P)很好!输入正确,编码结果如下:Huffman 编码所得码字 W:1 2 3 4 51 000 01 0011 0010 Huffman 编码平均码字长度 L:2.2000Huffman 编码的编码效率 q:0.9645W =1 000 01 0011 0010 L =2.2000q =0.9645教师评语

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报