matlab费诺编码程序.doc

上传人:仙人指路1688 文档编号:3818010 上传时间:2023-03-23 格式:DOC 页数:3 大小:15.50KB
返回 下载 相关 举报
matlab费诺编码程序.doc_第1页
第1页 / 共3页
matlab费诺编码程序.doc_第2页
第2页 / 共3页
matlab费诺编码程序.doc_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《matlab费诺编码程序.doc》由会员分享,可在线阅读,更多相关《matlab费诺编码程序.doc(3页珍藏版)》请在三一办公上搜索。

1、%函数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;

2、 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

3、(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(

4、请输入信源符号的个数:);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);disp(H)%显示信息熵fprintf(编码效率: =n);disp(n) %显示编码效率%fprintf(计算耗时time= %fn,toc);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号