MATLAB程序-信源编码_第1页
MATLAB程序-信源编码_第2页
MATLAB程序-信源编码_第3页
MATLAB程序-信源编码_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算信源熵的MATLAB源程序function H=entropy(P,r) if (length(find(P<=0)=0) error('Not a prob.vector,negative component'); end if(abs(sum(P)-1)>10e-10) error('Not a prob.vector,component do not add up to 1'); end H=(sum(-P.*log2(P)/(log2(r)+eps);香农编码的MATLAB源程序function s,L,q=shannon(p)%if(l

2、ength(find(p<=0)=0) % error('Not a prob.vector,negative component');%end%if(abs(sum(p)-1)>10e-10) % error('Not a prob.vector,component do not add up to 1')%endn=length(p);x=1:n;p,x=array(p,x);l=ceil(-log2(p);P(1)=0;n=length(p);for i=2:n P(i)=P(i-1)+p(i-1);endfor i=1:n for j=1:l

3、(i) temp(i,j)=floor(P(i)*2); P(i)=P(i)*2-temp(i,j); endends=;for i=1:n for j=1:l(i) t=temp(i,j); % if(temp(i,j)=0) % W(i,j)=48; s=s num2str(t); %else %W(i,j)=49; % end end s=s ' 'endL=sum(p.*l);H=entropy(p,2);q=H/L;for i=1:n Bi=i;ends0='很好!输入正确,编码结果如下:'s1='Shannon 编码所得码字W:'s2

4、='Shannon 编码平均码字长度L:'s3='Shannon 编码的编码效率q:'disp(s0);disp(s1),disp(B),disp(s);disp(s2),disp(L);disp(s3),disp(q);费诺编码的MATLAB源程序functionW,L,q=fano(P)if(length(find(P<=0)=0) error('Not a prob.vector,negative component');endif(abs(sum(P)-1)>10e-10) error('Not a prob.vect

5、or,component do not add up to 1');endn=length(P);x=1:n;P,x=array(P,x);for i=1:n current_index=i; j=1; current_P=P; while 1 next_P,code_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; end end l(i)=

6、length(find(abs(W(i,:)=0);endL=sum(P.*l);H=entropy(P,2);q=H/L;for i=1:n Bi=i;endn,m=size(W);TEMP=32*ones(n,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

7、(s0);disp(s1),disp(B),disp(W);disp(s2),disp(L);disp(s3),disp(q);霍夫曼编码的MATLAB源程序function W,L,q=huffman(P)if(length(find(P<=0)=0) error('Not a prob.vector,negative component');endif(abs(sum(P)-1)>10e-10) error('Not a prob.vector,component do not add up to 1');endn=length(P);p=P;m

8、ark=zeros(n-1,n);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;endfor i=1:n-1 table(i,:)=blanks(n*n);endtable(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); table(n-i

9、,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)*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); endend 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; end; m,n=size(W); W=reshape(W',1,m*n); s0='很好!输入正确,编码结果如下:' s1='Huffman

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论