基于二进制信源N次扩展熵率的MATLAB仿真.doc_第1页
基于二进制信源N次扩展熵率的MATLAB仿真.doc_第2页
基于二进制信源N次扩展熵率的MATLAB仿真.doc_第3页
基于二进制信源N次扩展熵率的MATLAB仿真.doc_第4页
基于二进制信源N次扩展熵率的MATLAB仿真.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

基于二进制信源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图(注:计算熵率时可以过滤掉概率为零的分量,因为x0时,x*lbx0)。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);for N=1:step n=zeros(1,2N); order=2.(0:N-1); for M=0:(2N-1) for i=1:(sample+1-N) if(order*x(i:N+i-1)=M) n(M+1)=n(M+1)+1;%记录信源发出的每种符号序列的个数 end end endp=n/(sample+1-N);%N次扩展的概率向量p=p(find(p=0);%过滤掉概率为0的分量,其原理是x0时,x*lbx0H(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图:(二)卷积法该算法的基本思想同滑窗法基本相同,不同的是通过符号序列与2的幂次向量做卷积实现窗口的滑动与进制的转换。记录每一个数据出现的频度,近似N次扩展信源每个消息的发出概率,最终求得其熵率HN(XN)并绘出HN(XN)-N图(注:计算熵率时可以过滤掉概率为零的分量,因为x0时,x*lbx0)。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,2step);%建立向量n记录每种符号序列出现的个数for N=1:steporder=2.(0:N-1);y=conv(x,order);y1=y(step:(length(y)+1-step);%只截取卷积的有效部分 for i=1:2step n(i)=length(find(y1=i-1);%记录信源发出的每种符号序列的个数 endp=n/length(y1);%N次扩展的概率向量p=p(find(p=0);%过滤掉概率为0的分量,其原理是x0时,x*lbx0H(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图:(三)变换形法该算法的基本思想是将原序列重组为一个N行、n/N列的一个新序列。将每一列数据看做一个窗口,仍然通过进制转换记录每个窗口消息组成的序列出现的频度,近似N次扩展信源每个消息的发出概率,最终求得其熵率HN(XN)并绘出HN(XN)-N图(注:计算熵率时可以过滤掉概率为零的分量,因为x0时,x*lbx0)。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:step x1=reshape(x,N,);%经过reshape后的x n=zeros(1,2N); order=2.(0:N-1); for M=0:(2N-1) for i=1:(sample/N) if(order*x1(:,i)=M) n(M+1)=n(M+1)+1;%记录信源发出的每种符号序列的个数 end end endp=n*N/sample;%N次扩展的概率向量p=p(find(p=0);%过滤掉概率为0的分量,其原理是x0时,x*lbx0H(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图:二、三种算法效率的比较在上文提到的三种算法中,每种算法都有其优点和局限性,下面就三种算法的特点进行一些较为简单粗略的比较。对于第一种方法滑窗法,相比变换形法,该方法能够记录较多的消息序列组数。故在样本总数一定时,该方法求得结果的可靠性更高。其不足是算法的时间复杂度较卷积法与变换形法较大,在样本数为840的条件下,若扩展阶数大于10,响应时间很长,甚至无法响应。对于第二种方法卷积法,其算法效率是三种方法中最高的。该算法兼具有多数据处理即高可靠性等特点,利用卷积运算降低了算法的时间复杂度。在样本数为840的条件下,可实现扩展阶数为16的熵率计算(如下图)。对于第三种方法变换形法,虽然该算法的数据处理量可以做到较大,但由于该算法只考察了在每种重组变换下每一列组成序列的统计特性,相比另两种算法,丢失的信息量较大,可靠性不高。由于其反映的信息量是最少的,所以计

温馨提示

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

评论

0/150

提交评论