一绘制二元熵函数曲线报告(共10页).doc

上传人:飞****2 文档编号:13426662 上传时间:2022-04-29 格式:DOC 页数:10 大小:117KB
返回 下载 相关 举报
一绘制二元熵函数曲线报告(共10页).doc_第1页
第1页 / 共10页
一绘制二元熵函数曲线报告(共10页).doc_第2页
第2页 / 共10页
点击查看更多>>
资源描述

《一绘制二元熵函数曲线报告(共10页).doc》由会员分享,可在线阅读,更多相关《一绘制二元熵函数曲线报告(共10页).doc(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上实验一 绘制二元熵函数曲线实验报告一、 实验目的1. 熟悉MATLAB工作环境及工具箱2. 理解熵函数表达式及其性质二、 实验内容用MATLAB软件编程绘制二元熵函数曲线三、 实验过程1. 复习二元熵函数,理解二元信源的熵H(w)=-wlogw-(1-w)log(1-w)表达式。2. 熟悉MATLAB软件。1) MATLAB的操作界面MATLAB操作界面主要分为:任务栏、命令窗、命令历史窗、当前目录浏览器、工作空间浏览器及一个“启动按钮”。任务栏:位于软件的正上方。各个菜单分别为:文件、编辑、视窗、调试、桌面、窗体、帮助这几个窗口,点击每个窗口可以选择需要的操作。命令

2、窗(Command Window):位于软件操作界面的右侧。在此窗口里,可以输入各种指令、函数、变量表达式并进行各种操作。该窗口用于输入命令并显示除图形以外的所有执行结果。窗口中的“”为命令提示符,直接在其后面输入命令并按下回车键后,会出现计算结果在命令后面。命令历史窗(Command History):位于软件操作界面的左下方。这个窗口记录了命令窗口已经运行过的所有命令(指令、函数等),允许用户对这些命令进行选择、复制。2) MATLAB的函数绘制二维图形最常用的就是plot函数,调用plot函数的三种形式:plot(x)、plot(x,y)、plot(x,y,r:x)。还有就是如何添加横坐

3、标和纵坐标标题的命令语句。3. 实验程序。w=0.:0.0001:0. %定义w的取值范围y=-w.*log2(w)-(1-w).*log2(1-w) %定义二元熵函数的表达式plot(w,y,r) %画出二元熵函数的曲线图xlabel(w) %x轴的名称ylabel(H(w) %y轴的名称grid on %给图形加上网格title(二元熵函数H(w) %函数曲线的名称运行结果如下:四、 实验结果分析从图中可以看出熵函数的一些性质,如果二元信源的输出概率是1或0(即二元信源的输出是确定的),则该信源不提供任何信息。当二元信源符号等概率发生时,即w=0.5时,信源的熵达到最大值,等于1比特信息量

4、,曲线关于w=0.5左右对称。五、 实验总结对MATLAB掌握不够,还缺少很多的MATLAB知识,应加强学习MATLAB。实验二 一般信道容量迭代算法实验报告一、 实验目的1. 熟悉MATLAB工作环境及工具箱2. 掌握一般信道容量迭代算法原理二、 实验内容用MATLAB软件编程实现一般信道容量迭代算法三、 实验过程1. 复习一般信道容量迭代算法,了解其基本思路。2. 熟悉MATLAB的工作界面及所要用到的基本函数及语句,如:输入语句、循环语句、exp函数等。3. 实验程序。N = input(输入信源符号X的个数N=)M = input(输出信源符号Y的个数M=)p_yx=zeros(N,M

5、) %程序设计需要信道矩阵初始化为零fprintf(输入信道矩阵概率n)for i=1:N for j=1:M p_yx(i,j)=input(p_yx=); %输入信道矩阵概率 if p_yx(i)0 error(不符合概率分布) end endendfor i=1:N %各行概率累加求和 s(i)=0; for j=1:M s(i)=s(i)+p_yx(i,j); endendfor i=1:N %判断是否符合概率分布if (s(i)=1.) error(不符合概率分布)endendb=input(输入迭代精度:) %输入迭代精度for i=1:N p(i)=1.0/N; %取初始概率为均

6、匀分布endfor j=1:M %计算q(j) q(j)=0; for i=1:N q(j)=q(j)+p(i)*p_yx(i,j); endend for i=1:N %计算a(i) d(i)=0; for j=1:M if(p_yx(i,j)=0) d(i)=d(i)+0; else d(i)=d(i)+p_yx(i,j)*log(p_yx(i,j)/q(j); end end a(i)=exp(d(i);endu=0;for i=1:N %计算u u=u+p(i)*a(i);endIL=log2(u) %计算ILIU=log2(max(a) %计算IUn=1while(IU-IL)=b)

7、 %迭代计算 for i=1:N p(i)=p(i)*a(i)/u; %重新赋值p(i) end for j=1:M %计算q(j) q(j)=0; for i=1:N q(j)=q(j)+p(i)*p_yx(i,j); end end for i=1:N %计算a(i) d(i)=0; for j=1:M if(p_yx(i,j)=0) d(i)=d(i)+0; else d(i)=d(i)+p_yx(i,j)*log(p_yx(i,j)/q(j); end end a(i)=exp(d(i); end u=0 for i=1:N %计算u u=u+p(i)*a(i); end IL=log

8、2(u) %计算IL IU=log2(max(a) %计算IU n=n+1endfprintf(信道矩阵为:n)disp(p_yx)fprintf(迭代次数n=%dn,n)fprintf(信道容量C=%f比特/符号,IL)实验结果为:输入信源符号X的个数N=3输出信源符号Y的个数M=4输入信道矩阵概率p_yx=0.5p_yx=0.25p_yx=0.1p_yx=0.15p_yx=0.23p_yx=0.4p_yx=0.27p_yx=0.1p_yx=0.19p_yx=0.21p_yx=0.6p_yx=0输入迭代精度:0.00001信道矩阵为: 0.5000 0.2500 0.1000 0.1500

9、0.2300 0.4000 0.2700 0.1000 0.1900 0.2100 0.6000 0迭代次数n=85信道容量C=0.比特/符号四、 实验分析与总结信道容量与输入信源的概率分布无关,它只是信道传输概率的函数,只与信道的统计特性有关。信道容量是完全描述信道特性的参量,是信道能够传输的最大信息量。只要信道的平均互信息达到极大值即等于信道容量,那么就说此输入概率分布是最佳的,因此达到信道容量的最佳输入分布并不是唯一的。迭代精度越小,计算的结果越准确,但加重了算法的重复计算量,即迭代次数越多。迭代精度越大,迭代次数越少,计算结果相对差些。因此,可以根据实际情况来定迭代精度。实验三 编程实

10、现哈夫曼编码实验报告一、实验目的1. 熟悉MATLAB工作环境及工具箱2. 掌握哈夫曼编码的原理二、实验内容用MATLAB软件编程实现哈夫曼编码三、实验过程1. 复习哈夫曼编码,掌握其编码的原理。2. 熟悉MATLAB的工作界面及所要用到的基本函数及语句。3.实验程序。function h,l=huffman(p) %h为每个符号对应的码字,l为输出码字的平均码长if (length(find(p10e-10) error(Not a prob.vector,component do not add to 1) %判断总概率是否为1end n=length(p); %编码的元素个数 q=p;

11、m=zeros(n-1,n); %构造n-1行、n列的零矩阵for i=1:n-1 %按概率大小排列得到m矩阵 q,l=sort(q); %返回一个列升序排列的矩阵 m(i,:)=l(1:n-i+1),zeros(1,i-1); q=q(1)+q(2),q(3:n),1; end for i=1:n-1 %生成一个n-1行、n*n列的矩阵c,每行看作n个段,每段长为n,记录一个码字 c(i,:)=blanks(n*n);end c(n-1,n)=1; %c矩阵的n-1行的第一个段赋值1 c(n-1,2*n)=0; % c矩阵的n-1行的第二个段赋值0for i=2:n-1 %确定从倒数第二开始

12、到第一行前二段的码字 c(n-i,1:n-1)=c(n-i+1,n*(find(m(n-i+1,:)=1)-(n-2):n*(find(m(n-i+1,:)=1); c(n-i,n)=1; c(n-i,n+1:2*n-1)=c(n-i,1:n-1); c(n-i,2*n)=0; for j=1:i-1 %每次循环时其他元素的码字c(n-i,(j+1)*n+1:(j+2)*n)=c(n-i+1,n*(find(m(n-i+1,:)=j+1)-1)+1:n*find(m(n-i+1,:)=j+1); end end for i=1:n %根据m矩阵第一行纪录的概率排序,给每个概率对应的符号分配码字

13、 h(i,1:n)=c(1,n*(find(m(1,:)=i)-1)+1:find(m(1,:)=i)*n); ll(i)=length(find(abs(h(i,:)=32); end l=sum(p.*ll); 以p= 1/6,1/4,5/12,1/6为例n = 4l = 1.9167ans =001 01 1 000四、哈夫曼编码的流程图开始统计符号概率,按大小排序合并两个最小的概率,产生新的概率,概率大的编1,小的编0产生的新概率与原来剩下的概率相同吗?把新概率放在前面再合并最小的两个概率,产生新概率,大概率编1,小概率编0合并最后两个概率,大概率编1,小概率编0原路返回去经过的01序

14、列即为该字符的码字结束 是 否五、实验分析与总结哈夫曼编码是一种无损压缩方法,其编码方式有以下几步:1、首先统计信源中各符号出现的概率,按符号出现的概率从大到小排序;2、把最小的两个概率相加合并成新的概率,与剩余的概率组成新的概率集合;3、对新的概率集合重新排序,再次把其中最小的两个概率相加,组成新的概率集合。如此重复进行,直到最后两个概率的和为l;4、分配码字:码字分配从最后一步开始反向进行,对于每次相加的两个概率,大的赋0,小的赋1,将从该符号开始一直走到最后的概率和“1”的路线上所遇到的0和1按最低位到最高位的顺序排好,就是该符号的哈大曼编码。哈夫曼编码方法得到的码字并不是唯一的。原因有两个:1、对概率大小的0、1编码方法是随便定义的,定义的方法不同,得到的最后的码字也不一样。2、在合并后的概率中若出现与原来概率相同的,这两个概率放在什么位置,方法也不是唯一的,所以最后编码也不一样。专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁