首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >如何计算EEG信号的香农熵Shannon entropy(附Matlab程序)

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

原创
作者头像
悦影科技
修改2020-12-01 16:55:43
修改2020-12-01 16:55:43
2.6K0
举报

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

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

什么是香农熵Shannon Entroy

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

如何计算Shannon Entroy

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

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

第一,由于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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档