费诺编码的MATLAB语言实现.docVIP

  • 89
  • 0
  • 约2.15千字
  • 约 5页
  • 2019-04-28 发布于江西
  • 举报
《信息处理与编码》结课大作业 学号: 班级: 姓名: 成绩: 费诺编码的MATLAB语言实现 1. 前言: 无失真的信源编码定理既是存在性定理又是构造性定理,即它给出了构造新源编码的原理性方法,使构造出的码其平均码长与信源统计特性相匹配。 2. 正文: 费诺编码也是一种常见的信源编码方法。将信源消息(符号)按其出现的概率由小到大依次排列;将依次排列好的信源符号按概率值分为两大组,使两个组的概率和近于相同,并对各组分别赋于一个二进制码元”0”和”1”;将每一大组的信源符号再进一步分成两组,使划分后的两组的概率和近于相同,并又分别赋予一个二进制符号”0”和”1”;如此重复,直至每个小组只剩下一个信源符号为止; 编码如下: 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); end 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; end end for i=1:n if i=k B(i,2)=0; else B(i,2)=1; end end END=B(:,2); END=sym(END); 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-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=k B(i,j)=0; END(i)=[char(END(i)),0]; else B(i,j)=1; END(i)=[char(END(i)),1]; end end end end p=q; end C=B(:,j); D=find(C==-1); [e,f]=size(D); if e==n j=0; else j=j+1; end end B A END for i=1:n [u,v

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档