好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

基于二进制信源n次扩展熵率的matlab仿真.doc

9页
  • 卖家[上传人]:wm****3
  • 文档编号:43141202
  • 上传时间:2018-06-04
  • 文档格式:DOC
  • 文档大小:52KB
  • / 9 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1基于二进制信源基于二进制信源N次扩展熵率的次扩展熵率的MATLAB仿真仿真摘要:本文通过MATLAB分析一个二进制的二符号信源,分别采用了滑窗法、卷积法、变换形法求出了该信源的N次(其中N最大为8)扩展信源的熵率,得出了熵率随着N的增加而逐渐减小的结论此外,本文还简单比较了三种算法的计算效率与优缺点关键词::MATLAB 二进制信源 熵率一、问题的重述和分析一、问题的重述和分析给定一个二进制信源,共包含 n 个样本,发出 0、1 的概率分别为 p、1-p对给定的二进制信源做 N 次扩展后,分析扩展后符号的概率统计特性,计算其熵率HN(XN)并分析 H(XN)与 N 的关系本文中,令 N=840,p=0.6,N 最大取值为 8下面,通过三种办法计算该二进制信源 N 次扩展的熵率一)滑窗法(一)滑窗法该算法的基本思想是设定一个宽度为 N 的窗口,由符号序列的第 1 个符号滑动到倒数第 N 个符号,通过进制转换记录这几组数据中每个窗口消息组成的序列出现的频度,近似 N 次扩展信源每个消息发出的概率,最终求得其熵率 HN(XN)并绘出HN(XN)-N 图(注:计算熵率时可以过滤掉概率为零的分量,因为 x→0 时,x*lbx→0) 。

      MATLAB 算法代码:算法代码:clcsample=840;%给定独立二进制信源[0,1]的样本数step=8; %设定最大扩展阶数probability_0=0.6;%设定符号 0 的概率H=zeros(1,step);%建立熵率向量x=randsrc(1,sample,[0,1;0.6,0.4]);2for N=1:stepn=zeros(1,2^N);order=2.^([0:N-1]);for M=0:(2^N-1)for i=1:(sample+1-N)if(order*x(i:N+i-1)'==M)n(M+1)=n(M+1)+1;%记录信源发出的每种符号序列的个数endendendp=n/(sample+1-N);%N 次扩展的概率向量p=p(find(p~=0));%过滤掉概率为 0 的分量,其原理是 x→0 时,x*lbx→0H(N)=-p*log2(p')/N;%输出每种扩展下的熵率endH%输出熵率向量stem([1:step],H)xlabel('扩展阶数 N=1:8');ylabel('熵率');输出:输出:H =0.9756 0.9749 0.9742 0.9715 0.9685 0.9654 0.9587 0.9438HN(XN)-N 图:图:3123456780.940.9450.950.9550.960.9650.970.9750.980.985三 三 三三 三 三 三 N=1:8三 三(二)卷积法(二)卷积法该算法的基本思想同滑窗法基本相同,不同的是通过符号序列与 2 的幂次向量做卷积实现窗口的滑动与进制的转换。

      记录每一个数据出现的频度,近似 N 次扩展信源每个消息的发出概率,最终求得其熵率 HN(XN)并绘出 HN(XN)-N 图(注:计算熵率时可以过滤掉概率为零的分量,因为 x→0 时,x*lbx→0) MATLAB 算法代码:算法代码:clcsample=840;%给定独立二进制信源[0,1]的样本数step=8; %设定最大扩展阶数probability_0=0.6;%设定符号 0 的概率x=randsrc(1,sample,[0,1;0.6,0.4]);H=zeros(1,step);%建立熵率向量n=zeros(1,2^step);%建立向量 n 记录每种符号序列出现的个数for N=1:step4order=2.^([0:N-1]);y=conv(x,order);y1=y(step:(length(y)+1-step));%只截取卷积的有效部分for i=1:2^stepn(i)=length(find(y1==i-1));%记录信源发出的每种符号序列的个数endp=n/length(y1);%N 次扩展的概率向量p=p(find(p~=0));%过滤掉概率为 0 的分量,其原理是 x→0 时,x*lbx→0H(N)=-p*log2(p')/N;%输出每种扩展下的熵率endH%输出熵率向量plot([1:step],H,'b-',[1:step],H,'bo')title('卷积法');xlabel('扩展阶数 N=1:8');ylabel('熵率');输出:输出:H =0.9714 0.9699 0.9689 0.9682 0.9665 0.9625 0.9545 0.9384HN(XN)-N 图:图:5123456780.9350.940.9450.950.9550.960.9650.970.9750.98三 三 三三 三 三 三 N=1:8三 三(三)变换形法(三)变换形法该算法的基本思想是将原序列重组为一个 N 行、n/N 列的一个新序列。

      将每一列数据看做一个窗口,仍然通过进制转换记录每个窗口消息组成的序列出现的频度,近似 N 次扩展信源每个消息的发出概率,最终求得其熵率 HN(XN)并绘出 HN(XN)-N图(注:计算熵率时可以过滤掉概率为零的分量,因为 x→0 时,x*lbx→0) MATLAB 算法代码:算法代码:clcsample=840;%给定独立二进制信源[0,1]的样本数step=8; %设定最大扩展阶数probability_0=0.6;%设定符号 0 的概率x=randsrc(1,sample,[0,1;0.6,0.4]);H=zeros(1,step);%建立熵率向量for N=1:stepx1=reshape(x,N,[]);%经过 reshape 后的 x6n=zeros(1,2^N);order=2.^([0:N-1]);for M=0:(2^N-1)for i=1:(sample/N)if(order*x1(:,i)==M)n(M+1)=n(M+1)+1;%记录信源发出的每种符号序列的个数endendendp=n*N/sample;%N 次扩展的概率向量p=p(find(p~=0));%过滤掉概率为 0 的分量,其原理是 x→0 时,x*lbx→0H(N)=-p*log2(p')/N;%输出每种扩展下的熵率endH%输出熵率向量plot([1:step],H,'b-',[1:step],H,'bo')title('变换形法');xlabel('扩展阶数 N=1:8');ylabel('熵率');输出:输出:H =0.9636 0.9627 0.9568 0.9472 0.9364 0.9018 0.8423 0.7561HN(XN)-N 图:图:7123456780.750.80.850.90.951三 三 三 三三 三 三 三 N=1:8三 三二、三种算法效率的比较二、三种算法效率的比较在上文提到的三种算法中,每种算法都有其优点和局限性,下面就三种算法的特点进行一些较为简单粗略的比较。

      对于第一种方法——滑窗法,相比变换形法,该方法能够记录较多的消息序列组数故在样本总数一定时,该方法求得结果的可靠性更高其不足是算法的时间复杂度较卷积法与变换形法较大,在样本数为 840 的条件下,若扩展阶数大于 10,响应时间很长,甚至无法响应对于第二种方法——卷积法,其算法效率是三种方法中最高的该算法兼具有多数据处理即高可靠性等特点,利用卷积运算降低了算法的时间复杂度在样本数为840 的条件下,可实现扩展阶数为 16 的熵率计算(如下图)802468101214160.650.70.750.80.850.90.951三 三 三三 三 三 三 N=1:16三 三对于第三种方法——变换形法,虽然该算法的数据处理量可以做到较大,但由于该算法只考察了在每种重组变换下每一列组成序列的统计特性,相比另两种算法,丢失的信息量较大,可靠性不高由于其反映的信息量是最少的,所以计算出的熵率是三种方法中最小的,且下降速率是最大的三种方法熵率计算的比较图像如下图所示(其中蓝线为卷积法,黑线为滑窗法,红线为变换形法) ,由该图像进一步的说明了三种算法的计算效率由高到低分别为卷积法、滑窗法、变换形法9123456780.750.80.850.90.951三 三 三 三 三 三 三 三 三 三三 三 三 三 N=1:8三 三三、参考资料三、参考资料[1]陈运.信息论与编码.2 版.北京:电子工业出版社,2011.。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.