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

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

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于二进制信源n次扩展熵率的matlab仿真

基于二进制信源N次扩展熵率的MATLAB仿真 本文通过MATLAB分析一个二进制的二符号信源,分别采用了滑窗法、卷积法、变换形法求出了该信源的N次(其中N最大为8)扩展信源的熵率,得出了熵率随着N的增加而逐渐减小的结论此外,本文还比较了三种算法的计算效率与优缺点:MATLAB clc sample=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,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;%记录信源发出的每种符号序列的个数 end end end p=n/(sample+1-N);%N次扩展的概率向量 p=p(find(p~=0));%过滤掉概率为0的分量,其原理是x→0时,x*lbx→0 H(N)=-p*log2(p)/N;%输出每种扩展下的熵率 end H%输出熵率向量 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.9438 HN(XN)-N图: (二)卷积法 该算法的基本思想同滑窗法基本相同,不同的是通过符号序列与2的幂次向量做卷积实现窗口的滑动与进制的转换。记录每一个数据出现的频度,近似N次扩展信源每个消息的发出概率,最终求得其熵率HN(XN)并绘出HN(XN)-N图(注:计算熵率时可以过滤掉概率为零的分量,因为x→0时,x*lbx→0)。 MATLAB算法代码: clc sample=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:step order=2.^([0:N-1]); y=conv(x,order); y1=y(step:(length(y)+1-step));%只截取卷积的有效部分 for i=1:2^step n(i)=length(find(y1==i-1));%记录信源发出的每种符号序列的个数 end p=n/length(y1);%N次扩展的概率向量 p=p(find(p~=0));%过滤掉概率为0的分量,其原理是x→0时,x*lbx→0 H(N)=-p*log2(p)/N;%输出每种扩展下的熵率 end H%输出熵率向量 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.9384 HN(XN)-N图: (三)变换形法 该算法的基本思想是将原序列重组为一个N行、n/N列的一个新序列。将每一列数据看做一个窗口,仍然通过进制转换记录每个窗口消息组成的序列出现的频度,近似N次扩展信源每个消息的发出概率,最终求得其熵率HN(XN)并绘出HN(XN)-N图(注:计算熵率时可以过滤掉概率为零的分量,因为x→0时,x*lbx→0)。 MATLAB算法代码: clc sample=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,2^N); order=2.^([0:N-1]); for M=0:(2^N-1) for i=1:(sa

文档评论(0)

shenlan118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档