《本文同步发布于“脑之说”微信公众号,欢迎搜索关注~~》

香农熵Shannon entropy又称为信息熵,是信息论中的一个概念,但是其很早就被引入到脑电领域的研究中。笔者相信大家在看脑电相关的研究论文中,会经常看到研究者计算脑电信号的香农熵这个指标。笔者并未学过信息论相关的课程,对香农熵也只是粗略知晓,但看到如此多的研究者在脑电研究中应用香农熵,笔者也是默默地下了点功夫对香农熵进行了一番研究。在本文中,笔者首先对香农熵做一个简单的介绍,接着,重点对如何计算脑电信号的香农熵进行了论述,并给出相应的Matlab程序。

什么是香农熵Shannon Entroy

香农熵是信息论领域的大牛Shannon于1948年提出的一个概念[1],香农熵又称为信息熵,直观地理解,它表征的是一个事物/事情包含的信息量的大小。举个简单的例子,一场足球比赛,对阵双方如果是德国国家队和越南国家队,鉴于两队的实例,那么你可能会有100%的把握认为德国队会获胜,这时候这场比赛的结果基本已经确定了,这场比赛的信息量就基本为0(结果已定,大家的观点只有一个,没有什么悬念了,这件事也就没有什么信息量了);相反,如果德国队与法国队比赛,那么结果就不会那么确定,这时候这场比赛的信息量就很大(结果不确定,大家的观点就有两个,即双方都有可能获胜,信息量很大)。当然,上述只是对香农熵的一个简单通俗的理解,如果想对香农熵进行深入研究,建议参考专门的信息论方面的书籍。总结一下:事件/事物的不确定性越大,则信息量越大,相应的香农熵也就越大;反之,事件/事物的不确定性越小,则信息量越小,香农熵越小。

如何计算Shannon Entroy

这里所说的香农熵计算方法主要针对如脑电信号之类的连续时间序列来说。香农熵的计算公式如下:

其中,H(X)表示连续时间序列信号X的香农熵;对于连续时间序列信号,我们在计算香农熵时,一般需要对信号先进行“分段”(英文里称之为bin),具体方法如下:假设你的这一段脑电信号有10000个数据点,幅值范围是-0.2V到0.2V, 我们可以把这段脑电信号按照幅值分割成100个bin,那么每一个bin的幅值范围应该依次是[-0.2 -0.196], [-0.196 -0.192],……,[0.196 0.2];此时,我们统计脑电信号幅值落在上述各个bin内的数据点个数,并除以脑电信号总数据点(这里为10000)得到各个bin的概率。因此,上述公式中,n指的就是你把数据分成了多少个“片段”(bin),在上述举的例子中,n=100;xi指的是每个bin,而不是脑电信号的每个数据点,在上述例子中,x1指的是[-0.2 -0.196],x2指的是[-0.196 -0.192],以此类推;相应地,p(xi)指的是xi的概率。

对于上述计算公式我们需要注意几点:

第一,由于p(xi)为大于0小于1的实数,其取log2对数之后,一般小于0,因此公式中前面加了个负号,说明计算的香农熵最后都为正值;
第二,我们在计算香农熵时,取多少个bin,或者说上述公式中n取多少合适呢?这里我们可以采用一个比较简单的估计公式,即Sturges规则,n=1+log2(N),这里的N指的是脑电数据的数据点个数[2]。
第三,香农熵与信号的时间结构无关,仅与数据的概率分布相关。也就是说,如果你对一段信号的数据点在时间先后顺序上进性随机打乱,计算得到的香农熵不变。

例子:计算正弦信号sin(2pi10*t)的香农熵。

笔者通过Matlab编程,首先研究了不同bin数目(即公式中n的值)对香农熵的影响,如下图所示。可以看到,随着bin数目的增大,香农熵也不断增加,可见bin数目对计算香农熵影响很大,我们在具体应用时要严格谨慎选择bin数目。

我们采用Sturges规则,计算得到n=15,香农熵为3.7022。

总结

本文,笔者对香农熵的概念进行了简单介绍,并重点论述了如何计算脑电信号的香农熵。计算如脑电信号之类的连续时间序列信号,最为关键的一步是要对连续进行进行“分段”,即bin。关于本文例子对应的Matlab程序,如有朋友需要,请先转发本文到您的朋友圈,然后截图发给我(微信号:kervin_zhao),我会把相应代码发给您(原创不易,请大家理解)。对于计算香农熵遇到的问题,也可以加笔者进行交流。

参考文献:

[1] Shannon CE . A mathematical theory of communication[J]. Bell Labs Technical Journal,1948, 27(4):379-423.

[2] Sturges ,H. 1926 . The Choice of a Class-Interval. Journal of the American StatisticalAssociation 21 : 65–66

注:原创不易,请多多转发支持,如有问题请加笔者微信交流(悦影科技赵宗亚,微信:15560177218)

如何计算EEG信号的香农熵Shannon entropy(附Matlab程序)相关推荐

  1. matlab 多重比较,谈一谈两种常用的多重比较校正方法(附Matlab程序)

    作者:kervin 微信号:kervin_zhao 在科学研究的统计分析中,我们往往会遇到多重比较校正问题.多重比较校正的方法很多,如Bonferroni.False Discovery Rate(F ...

  2. 用matlab仿真导航信号,北斗卫星导航信号串行捕获算法MATLAB仿真报告(附MATLAB程序)[互联网+]...

    <北斗卫星导航信号串行捕获算法MATLAB仿真报告(附MATLAB程序)[互联网+]>由会员分享,可在线阅读,更多相关<北斗卫星导航信号串行捕获算法MATLAB仿真报告(附MATLA ...

  3. 用matlab仿真导航信号,北斗卫星导航信号串行捕获算法MATLAB仿真报告(附MATLAB程序)...

    <北斗卫星导航信号串行捕获算法MATLAB仿真报告(附MATLAB程序)>由会员分享,可在线阅读,更多相关<北斗卫星导航信号串行捕获算法MATLAB仿真报告(附MATLAB程序)(9 ...

  4. 用MATLAB实现转子的故障诊断,单盘转子故障诊断报告(附matlab程序).doc

    单盘转子故障诊断报告(附matlab程序).doc 单盘转子故障诊断报告1数据TEST1TXT,数据长度1556486,2组振动数据第一.二列为测点1涡流传感器X.Y振动数据:第三.四列为测点2涡流传 ...

  5. 【模糊综合评价的运用】——《电子舌技术在食用盐模糊感官评价中的应用》论文笔记(内附MATLAB程序)

    [模糊综合评价的运用]--<电子舌技术在食用盐模糊感官评价中的应用>论文笔记(内附MATLAB程序) 本文目录 1.因素集:(评价指标集)与评价事物相关的因素. 2. 评语集:(评价的结果 ...

  6. 【模糊综合评价的运用】——《基于模糊评价法的高校户外公共活动空间研究》论文笔记(内附MATLAB程序)

    基于模糊评价法的高校户外公共活动空间研究 - 中国知网 (cnki.net) [模糊综合评价的运用]--<基于模糊评价法的高校户外公共活动空间研究>论文笔记(内附MATLAB程序) 文章目 ...

  7. matlab程序4名商人,商人们怎样安全过河附MATLAB程序完整.doc

    商人们怎样安全过河附MATLAB程序完整.doc *** 商人们怎样安全过河 随从们密约, 在河的任一岸, 一旦随从的人数比商人多, 就杀人越货. 但是乘船渡河的方案由商人决定. 商人们怎样才能安全过 ...

  8. 卫星测控matlab程序,北斗卫星导航信号串行捕获算法MATLAB仿真报告(附MATLAB程序).docx...

    PAGE 4 北斗卫星导航信号串行捕获算法MATLAB仿真报告 原理 卫星导航信号的串行捕获算法如图1所示. 图1 卫星导航信号的串行捕获算法 接收机始终在本地不停地产生对应某特定卫星的本地伪码,并且 ...

  9. Caputo 分数阶导数的 H2N2 插值逼近 (附Matlab程序)

    Caputo 分数阶导数的 H2N2 插值逼近 Caputo 分数阶导数快速的 H2N2 插值逼近(附Matlab代码) 文章目录 Caputo 分数阶导数的 H2N2 插值逼近 H2N2 插值逼近格 ...

最新文章

  1. pro*c 倒出数据库数据
  2. c\c++ 随机数函数
  3. C 语言中,x += 5 == 4 是什么意思?
  4. oracle rollup分组没有数据时为0_Hive 入门数据分析基础 5
  5. 复制release文件到另一台电脑.exe文件无法运行_电脑技巧:电脑版微信双开(或微信多开)?用start指令可以解决...
  6. 光线跟踪的几种常见求交运算
  7. c语言中栈的作用,栈(Stack)的概念和应用及C语言实现
  8. python查看模块的方法_python 查看某个模块都有什么方法
  9. html读取本地json数据库,用Javascript读取本地JSON到HTML
  10. 基于Hive解析AST的模仿sqlFlow无中间表的字段级数据血缘的后端
  11. linux eth0网卡配置详解
  12. linux的命令名必须是小写英文字母,Linux常用命令及操作
  13. 【转】Java方向如何准备BAT技术面试答案(汇总版)
  14. redis集群拓扑_Redis拓扑
  15. Java使用465端口发送邮件(绕过25端口限制)
  16. sharding-jdbc之SQL改写
  17. 一种能克服反光现象的围棋图谱可靠识别方法
  18. python进阶:yield与yield from
  19. http请求包与请求返回的是什么
  20. html背景颜色图片,HTML背景颜色和背景图片

热门文章

  1. 监控服务器时间无法修改怎么办,监控服务器修改时间
  2. invalid python sd,Fatal Python error: init_fs_encoding: failed to get the Python cod如何解决
  3. 文都教育2022考研真题解析暨复试备考指导直播峰会圆满落幕
  4. 迅雷下载的都是php_为什么用迅雷下载的是PHP文件?
  5. Caltech-UCSD Birds-200-2011
  6. 孝经白话:广要道章第十二
  7. npm系列:package.json
  8. 赤橙黄绿青蓝紫html颜色,赤橙黄绿青蓝紫七种颜色的代码?
  9. 简书android des,Android 加密之DES加密
  10. Google SEO优化排名常见的三种问题