news 2026/1/1 8:53:55

熵特征提取算法对比详解:从原理到实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
熵特征提取算法对比详解:从原理到实战

一、熵的概念与特征提取基础

1.1 信息熵的起源与定义

信息熵的概念最早由克劳德·香农于1948年在其开创性论文《通信的数学理论》中提出,用于解决信息量化问题。熵本质上是对系统不确定性或混乱程度的度量。在信息论中,熵表示信息的不确定性,即信息量的期望值。

信息熵的数学定义如下:对于离散随机变量X,其概率分布为P(X=xi) = pi,则信息熵H(X)定义为:

H(X) = -Σpi * log(pi)

其中对数通常以2为底,单位是比特(bit),也可以以e为底,单位是奈特(nats)。

从特征提取的角度看,信息熵提供了一个重要洞察:熵值越大,系统的不确定性越高,包含的信息量越少;反之,熵值越小,系统的确定性越强,可能包含更多有意义的信息。这一原理成为各种熵特征提取算法的基础。

1.2 熵特征提取的基本思想

在信号处理领域,熵特征提取的基本思想是:通过计算信号在不同变换域或特征空间的熵值,来量化信号的复杂性、随机性或规律性。不同类型的熵从不同角度揭示信号特性,从而适用于各种应用场景。

传统的时域特征(如均值、方差)和频域特征(如频谱重心)虽然有用,但难以捕捉信号的复杂动态特性。而熵特征能够有效表征信号的非线性动态特性,在机械设备故障诊断、生物医学信号分析、金融时间序列预测等领域展现出独特优势。

表1:熵特征与传统特征的比较

特征类型描述重点计算复杂度适用场景
时域特征信号幅值统计特性简单振动分析、基本信号分析
频域特征信号频率分布特性周期性分析、频谱分析
熵特征信号复杂度和不确定性非线性系统、复杂动态分析

二、单变量熵特征算法

2.1 近似熵(Approximate Entropy, ApEn)

近似熵是由Pincus于1991年提出,用于度量时间序列的复杂性和规律性。其核心思想是:通过比较信号中模式重复出现的概率来评估序列的复杂性

2.1.1 算法原理

近似熵的计算步骤如下:

  1. 序列重构:给定长度为N的时间序列{u(i), i=1,2,…,N},重构m维向量:X(i) = [u(i), u(i+1), …, u(i+m-1)],其中m为嵌入维数。
  2. 距离计算:计算向量X(i)与X(j)之间的距离d[X(i), X(j)],通常使用切比雪夫距离。
  3. 相似度判断:对于每个i,统计d[X(i), X(j)] ≤ r的个数,并计算其与总数N-m+1的比值,记为Cᵢᵐ®。
  4. 概率计算:取所有Cᵢᵐ( r )的对数,并求平均值:φᵐ ( r ) = (N-m+1)⁻¹ × Σln[Cᵢᵐ( r )]。
  5. 近似熵计算:ApEn(m, r, N) = φᵐ( r ) - φᵐ⁺¹( r )。
2.1.2 参数选择与MATLAB实现

近似熵计算中,嵌入维数m通常取1或2,阈值r一般取0.1-0.25倍信号标准差。MATLAB实现代码如下:

functionApEn=approximateEntropy(data,m,r)% 近似熵计算函数% 输入:data - 输入信号,m - 嵌入维数,r - 阈值% 输出:ApEn - 近似熵值N=length(data);phi_m=0;phi_m1=0;% 计算m维情况下的φ值fori=1:N-m+1pattern_m=data(i:i+m-1);count=0;forj=1:N-m+1pattern_j=data(j:j+m-1);ifmax(abs(pattern_m-pattern_j))<=r count=count+1;endendC_i=count/(N-m+1);phi_m=phi_m+log(C_i);endphi_m=phi_m/(N-m+1);% 计算m+1维情况下的φ值fori=1:N-m pattern_m1=data(i:i+m);count=0;forj=1:N-m pattern_j=data(j:j+m);ifmax(abs(pattern_m1-pattern_j))<=r count=count+1;endendC_i=count/(N-m);phi_m1=phi_m1+log(C_i);endphi_m1=phi_m1/(N-m);ApEn=phi_m-phi_m1;end
2.1.3 优缺点与应用场景

近似熵的主要优点是算法相对简单,对数据量要求不高。但也存在明显缺点:结果缺乏一致性,对参数选择敏感,且容易产生偏差

近似熵广泛应用于生物医学信号处理,如心电图(ECG)分析、脑电图(EEG)复杂度评估,以及机械设备振动信号监测。

2.2 样本熵(Sample Entropy)

样本熵是Richman和Moorman于2000年对近似熵的改进算法,解决了近似熵的两个主要问题:偏差性和不一致性

2.2.1 算法原理与改进

样本熵的改进主要体现在:

  1. 排除自匹配:在计算相似模式时,排除向量与自身的比较,消除偏差。
  2. 一致性计算:在m维和m+1维空间中使用相同的阈值条件,确保结果一致性。

样本熵计算公式为:

SampleEn(m, r, N) = -ln[Aᵐ(r)/Bᵐ(r)]

其中Bᵐ®是m维空间中的模板匹配数,Aᵐ®是m+1维空间中的模板匹配数。

2.2.2 MATLAB实现代码
functionSampEn=sampleEntropy(data,m,r)% 样本熵计算函数% 输入:data - 输入信号,m - 嵌入维数,r - 阈值% 输出:SampEn - 样本熵值N=length(data);% 数据标准化(可选,使r与标准差相关)% data = (data - mean(data)) / std(data);B=0;A=0;% 计算m维情况下的匹配数fori=1:N-m pattern_i=data(i:i+m-1);forj=1:N-mifi==jcontinue;% 排除自匹配endpattern_j=data(j:j+m-1);ifmax(abs(pattern_i-pattern_j))<=r B=B+1;endendend% 计算m+1维情况下的匹配数fori=1:N-m-1pattern_i=data(i:i+m)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/1 2:12:59

Quartz 工作模式,是“堵塞排队”还是“并发狂奔”?

Quartz 是“堵塞排队”还是“并发狂奔”&#xff1f; 在后台系统的开发中&#xff0c;经常使用 Quartz 这样的框架来处理定时任务&#xff08;比如每天凌晨 1 点归档数据、每 5 分钟发送一次通知&#xff09;。 但你是否想过一个问题&#xff1a;如果任务设定每 5 分钟执行一次…

作者头像 李华
网站建设 2025/12/27 2:27:33

【C2000系列DSP的反向灌电流】为什么热插拔的时候I2C总线电平会被拉低?

【C2000系列DSP的反向灌电流】为什么热插拔的时候I2C总线电平会被拉低? 一、I2C热插拔总线拉低的核心原因 先明确I2C总线的电气特性:I2C是开漏输出总线,依赖外部上拉电阻(通常1k~10kΩ)拉到VCC,MCU管脚仅能主动拉低总线,释放后由上拉电阻拉高。无防倒灌设计时,热插拔导…

作者头像 李华
网站建设 2025/12/26 13:55:28

软件解耦与扩展:插件式开发方式(基于 C++ 与 C# 的实现)

软件解耦与扩展&#xff1a;插件式开发方式&#x1f914; 什么是插件式开发&#xff1f;&#x1f9e9; 为何选择插件式开发&#xff1f;—— 解耦与扩展的艺术1. 高度解耦2. 极致的扩展性3. 增强可维护性4. 支持动态加载与卸载&#x1f3d7;️ 插件系统的核心架构&#x1f4bb;…

作者头像 李华