news 2026/7/10 9:36:49

从信息熵到相位传递熵:原理、计算与代码实战(MATLAB/Python)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从信息熵到相位传递熵:原理、计算与代码实战(MATLAB/Python)

1. 信息熵:从概念到生活化理解

第一次听到"熵"这个字时,我也和大多数人一样感到困惑和畏惧。直到后来在分析脑电信号时,才发现它其实是个非常实用的工具。简单来说,熵就是用来衡量系统不确定性的指标。想象一下你每天早上打开衣柜选衣服的场景:如果衣柜里只有清一色的白衬衫(高度有序),你的选择就很确定,这时候熵值很低;但如果衣柜里塞满了各种颜色款式的衣服(高度混乱),选择起来就困难得多,这时候熵值就很高。

香农在1948年提出的信息熵公式是这个领域的基础:

import numpy as np def shannon_entropy(probabilities): return -np.sum(probabilities * np.log2(probabilities))

这个公式中的对数运算很关键。我用一个骰子实验来解释:当骰子公平(每个面概率均等)时,熵值最大;如果骰子被做了手脚(某个面概率特别高),熵值就会降低。在实际的脑电分析中,我们经常用这个原理来检测信号是否出现异常模式。

2. 联合熵与条件熵:多变量关系的度量

当处理脑电信号这类多通道数据时,单独看每个通道的熵远远不够。这就引出了联合熵的概念——就像同时观察多个脑区的活动状态。我常用一个简单的比喻:单独看一个人的心电图只能知道心跳情况,但结合脑电一起看,就能了解心脑交互。

条件熵则更有意思,它描述的是"知道Y之后,X还剩下多少不确定性"。在分析癫痫患者脑电时,我们发现发作前期某些脑区间的条件熵会显著降低,这成为了重要的预警信号。计算这两个指标的Python实现如下:

def joint_entropy(joint_prob): return -np.sum(joint_prob * np.log2(joint_prob)) def conditional_entropy(prob_x_given_y, prob_y): return -np.sum(prob_y * np.sum(prob_x_given_y * np.log2(prob_x_given_y), axis=0))

3. 传递熵:捕捉信息流动方向

传统相关性分析只能告诉我们两个脑区是否有关联,而传递熵能告诉我们信息流动的方向。这个特性在运动想象脑机接口研究中特别有用——我们可以准确识别运动指令是从前额叶传导到运动皮层,还是反向传导。

通过分析健康受试者和中风患者的脑电数据,我发现健康组的运动相关脑区传递熵呈现明确单向性,而患者组则出现紊乱模式。MATLAB计算传递熵的核心代码如下:

function TE = transfer_entropy(source, target, delay, bins) % 离散化处理 source_disc = discretize(source, bins); target_disc = discretize(target, bins); % 计算各种概率分布 [P_yt, P_yt_xt, P_yt_xt_ytau] = estimate_probabilities(target_disc, source_disc, delay); % 计算各项熵值 H_yt = -nansum(P_yt .* log2(P_yt)); H_yt_xt = -nansum(nansum(P_yt_xt .* log2(P_yt_xt))); H_yt_xt_ytau = -nansum(nansum(nansum(P_yt_xt_ytau .* log2(P_yt_xt_ytau)))); TE = H_yt_xt + H_ytau_xt - H_yt - H_yt_xt_ytau; end

4. 相位传递熵:处理连续信号的利器

原始传递熵在处理脑电这种连续信号时效果不佳,这时就需要相位传递熵。它先通过希尔伯特变换提取信号的瞬时相位,再进行熵计算。这个方法在睡眠分期研究中表现出色,特别是区分REM和NREM睡眠阶段。

我优化过的Python实现版本包含以下关键步骤:

from scipy.signal import hilbert def phase_transfer_entropy(signal1, signal2): # 希尔伯特变换获取相位 phase1 = np.angle(hilbert(signal1)) + np.pi phase2 = np.angle(hilbert(signal2)) + np.pi # 自动确定binsize binsize = 3.49 * np.mean([np.std(phase1), np.std(phase2)]) * len(phase1)**(-1/3) # 后续计算与普通传递熵类似 ...

在实际应用中,我发现相位传递熵对预处理特别敏感。比如滤波器的选择会显著影响结果,经过多次试验,最终确定使用0.5-40Hz的带通滤波器效果最佳。同时要注意,采样率低于200Hz时相位估计会不准确。

5. 实战案例:脑功能连接分析

结合一个真实的EEG数据分析案例,展示完整流程。数据集来自OpenNeuro的ds003490,包含20名受试者的静息态脑电记录。

数据处理流程包括:

  1. 导入64通道EEG数据
  2. 预处理(去噪、滤波、分段)
  3. 计算各通道间的相位传递熵
  4. 构建有向功能连接网络

关键MATLAB代码片段:

% 计算所有通道对的PTE for i = 1:64 for j = 1:64 if i ~= j [PTE_matrix(i,j), dPTE_matrix(i,j)] = compute_dPTE(EEG.data(i,:), EEG.data(j,:)); end end end % 可视化连接矩阵 figure; imagesc(dPTE_matrix); colorbar; title('有向相位传递熵连接矩阵');

分析结果显示,健康成年人在静息状态下默认模式网络内部存在显著的信息流向,从后扣带回向前额叶方向传导。这种模式在阿尔茨海默症患者中会出现明显减弱。

6. 参数优化与常见问题

经过多次项目实践,我总结出几个关键经验:

  1. binsize选择:采用Scott规则通常效果不错,公式为3.49*σ*n^(-1/3)。但对于非高斯分布信号,建议尝试Freedman-Diaconis规则

  2. 延迟时间确定:自动估计延迟时间的方法中,互信息法比自相关法更适合非线性信号

  3. 数据长度要求:至少需要1000个样本点才能获得稳定结果,短时程分析建议使用滑动窗口

常见问题解决方案:

  • 出现NaN值:检查是否有空bin,可以添加拉普拉斯平滑
  • 结果不稳定:尝试对数据做z-score标准化
  • 计算速度慢:先用PCA降维,或改用GPU加速

Python优化版完整代码已封装成函数,包含自动参数调节和结果可视化功能:

def advanced_PTE_analysis(signal1, signal2, fs=1000): """ 参数: signal1: 源信号 signal2: 目标信号 fs: 采样频率 返回: PTE: 相位传递熵值 dPTE: 有向相位传递熵值 fig: 可视化图形 """ # 包含完整预处理和自动参数优化 ...

在最近的一个情绪识别项目中,这套方法将分类准确率提升了12%,特别是在区分高唤醒度情绪时效果显著。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/9 3:01:05

演唱会荧光棒XL2400T芯片加PA放大后距离可达700米

现在演唱会、音乐节、大型体育赛事的场控荧光棒,需要实现成千上万支灯棒同步变色、分区点亮、跟随音乐动态切换灯光效果。传统红外遥控传输距离近、容易互相干扰;蓝牙方案组网数量有限、成本偏高。本次采用深圳市芯岭技术XL2400T 2.4G 无线收发芯片&…

作者头像 李华
网站建设 2026/7/7 6:40:53

微信聊天记录跨电脑迁移:从手动备份到一键同步的完整指南

1. 微信聊天记录迁移的痛点与解决方案 每次换新电脑最头疼的就是微信聊天记录迁移了。记得去年我换了工作电脑,光是找聊天记录存储路径就花了半小时,好不容易找到WeChat Files文件夹,复制粘贴又遇到各种权限问题。更糟心的是,好不…

作者头像 李华
网站建设 2026/7/5 15:56:46

Qt6.5.2 集成官方MQTT模块:从源码编译到项目部署的CMake实践指南

1. 为什么选择Qt官方MQTT模块? 在物联网开发中,MQTT协议因其轻量级和低功耗特性成为设备通信的首选方案。Qt6.5.2开始将MQTT模块纳入官方支持,相比第三方库(如Paho MQTT),官方模块有三大优势:首…

作者头像 李华
网站建设 2026/7/7 13:24:19

公证服务要准备什么?公证服务线上能办吗?

本文面向异地办事不便、身处境外或是不想专程跑线下公证处的人群,系统梳理了公证服务的基础概念、适用场景、所需材料、办理周期与费用标准,同时对比了线下公证处办理和线上微信/支付宝“慧办好”公证小程序的实操流程,搭配高频常见问题解答&…

作者头像 李华