信息论与编码实验

信息论与编码实验

ID:20952513

大小:36.00 KB

页数:12页

时间:2018-10-18

信息论与编码实验_第1页
信息论与编码实验_第2页
信息论与编码实验_第3页
信息论与编码实验_第4页
信息论与编码实验_第5页
资源描述:

《信息论与编码实验》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、信息论与编码实验费诺编码:一种信源编码。设有离散无记忆信源X,P(X).二进制费诺编码为:1.将信源符号按概率从大到小的顺序排列2.将信源分成两组――按两组概率之差为最小分.3.上面一组编码为0,下面一组编码为1,一直分到一组只有一个信源为止.4.将一个信源分组得到的0和1全部连接起来,组成该信源的码字,信源即得到自己的费诺编码.该程序采用费诺编码算法,通过调用函数递归实现。调用用f1函数将输入变量赋初值,f1函数完成第一次分组后,并对字符数组x(存放码字)第一列赋值得到第一个分界点d,再用f1,f2函数相互调用和自身调用分别实现第一分界点以上和以下的符号再次分组并赋值给字符数组x;因为

2、f1,f2函数分别每次,实现分界点以上和以下寻找下一个分界点所采用的算法不同,两个函数相互调用;本程序的难点是字符数组x如何存放码字,程序采用每次调用增加存放码字数组x的列数r,在寻得分界点后即赋值,可是最后程序输出只有第一列的值,原来变量x每次的值被冲了,采用global全局变量解决了上问题,不过采用global全局变量定义x后,x的类型需要转换为char最关键的是程序开头必须用clearall把global定义的变量归零,不然global定义的变量中存放的还是上次所存的值.clc;clearall;N=input('N=');%输入信源符号的个数s=0;l=0;H=0;fori=1:

3、Nfprintf('第%d个',i);p(i)=input('p=');%输入信源符号概率分布矢量,p(i)<1ifp(i)<=0error('不符合概率分布')ends=s+p(i)H=H+(-p(i)*log2(p(i)));%计算信源信息熵endif(s<=0.999999

4、

5、s>=1.000001)error('不符合概率分布')endtic;fori=1:N-1%按概率分布大小对信源排序forj=i+1:Nifp(i)

6、nd(x(i,:)));l=l+p(i)*L(i);endn=H/l;%计算编码效率fprintf('按概率降序排列的码字:');disp(x)%显示按概率降序排列的码字fprintf('平均码长:');disp(l)%显示平均码长fprintf('编码效率:');disp(n)%显示编码效率fprintf('计算耗时time=%f',toc);%函数f1存放于f1.mfunctionx=f1(i,j,p,r)globalx;x=char(x);if(j<=i)return;elseq=0;fort=i:j%对于区间[i,j]自上而下求累加概率值q=p(t)+q;y(t)

7、=q;endfort=i:j%把所有自上而下的累加概率值与该区间总概率值减该累加概率值之差取绝对值存在一数组v(t)=abs(y(t)-(q-y(t)));endfort=i:jif(v(t)==min(v))%求该数组中最小的一个值来确定分界点位置fork=i:t%赋值码字x(k,r)='0';endfork=(t+1):jx(k,r)='1';endd=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);elseendendendreturn;%函数f2存放于f2.mfunctionx=f2(

8、i,j,p,r)globalx;x=char(x);if(j<=i)return;elseq=0;fort=i:j%对于区间[i,j]自上而下求累加概率值q=p(t)+q;y(t-i+1)=q;endfort=1:j-(i-1)%把所有自上而下的累加概率值与该区间总概率值减该累加概率值之差取绝对值存在一数组v(t)=abs(y(t)-(q-y(t)));endfort=1:j-(i-1)if(v(t)==min(v))%求该数组中最小的一个值来确定分界点位置d=t+i-1;fork=i:d%赋值码字x(k,r)='0';endfork=(d+1):jx(k,r)='1';endf2(d+

9、1,j,p,r+1);%递归调用及相互调用f1(i,d,p,r+1);f2(i,d,p,r+1);f1(d+1,j,p,r+1);elseendendendreturn;运行结果:N=6第1个p=0.32s=0.3200第2个p=0.22s=0.5400第3个p=0.04s=0.5800第4个p=0.08s=0.6600第5个p=0.16s=0.8200第6个p=0.18s=1按概率降序排列的码字:00011011011101111

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。