matlab费诺编码程序.doc_第1页
matlab费诺编码程序.doc_第2页
matlab费诺编码程序.doc_第3页
全文预览已结束

下载本文档

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

文档简介

%函数f1存放于f1.mfunction x=f1(i,j,p,r)global x;x=char(x);if(j=i) return;else q=0;for t=i:j %对于区间i,j自上而下求累加概率值 q=p(t)+q;y(t)=q; endfor t=i:j%把所有自上而下的累加概率值与该区间总概率值减该累加概率值之差取绝对值存在一数组v(t)=abs(y(t)-(q-y(t); endfor t=i:j if(v(t)=min(v) %求该数组中最小的一个值来确定分界点位置 for k=i:t %赋值码字 x(k,r)=0; end for k=(t+1):j x(k,r)=1; end d=t; f1(i,d,p,r+1); %递归调用及相互调用 f2(d+1,j,p,r+1); f1(d+1,j,p,r+1); f2(i,d,p,r+1); else endend endreturn;%函数f2存放于f2.mfunction x=f2(i,j,p,r)global x;x=char(x);if(j=i) return;else q=0;for t=i:j %对于区间i,j自上而下求累加概率值 q=p(t)+q;y(t-i+1)=q; endfor t=1:j-(i-1)%把所有自上而下的累加概率值与该区间总概率值减该累加概率值之差取绝对值存在一数组v(t)=abs(y(t)-(q-y(t); endfor t=1:j-(i-1) if(v(t)=min(v) %求该数组中最小的一个值来确定分界点位置 d=t+i-1; for k=i:d %赋值码字 x(k,r)=0; end for k=(d+1):j x(k,r)=1; end f2(d+1,j,p,r+1);%递归调用及相互调用 f1(i,d,p,r+1); f2(i,d,p,r+1); f1(d+1,j,p,r+1); else endend endreturn;主函数clc;clear all;fprintf(费诺编码程序n );fprintf(小组成员:苏、杨、张n n );fprintf(请输入信源符号的个数:);N=input(N=);%输入信源符号的个数s=0;l=0;H=0;for i=1:N fprintf(请输入第%d个符号的概率:,i); p(i)=input(p=);%输入信源符号概率分布矢量,0p(i)1 if p(i)=1 error(请注意P的范围是0P1) end s=s+p(i) H=H+(- p(i)*log2(p(i);%计算信源信息熵endif (s=1)error(信源符号概率和不等1)endtic;for i=1:N-1 %按概率分布大小对信源排序 for j=i+1:N if p(i)p(j) m=p(j);p(j)=p(i);p(i)=m; end endendx=f1(1,N,p,1);for i=1:N %计算平均码长 L(i)=length(find(x(i,:); l=l+p(i)*L(i);endn=H/l; %计算编码效率fprintf(编码后所得码字:n);disp(x) %显示按概率降序排列的码字fprintf(平均码长:K=n);disp(l)% 显示平均码长fprintf(信息熵:H(X)=n);d

温馨提示

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

最新文档

评论

0/150

提交评论