说明:“本博文为排列熵、模糊熵、近似熵、样本熵的原理及MATLAB实现”系列博文的最后一篇,关于排列熵、模糊熵、样本熵的内容请阅读博客:

排列熵

模糊熵

样本熵

近似熵

  • 四、近似熵
    • 1.简介
    • 2.基本原理
    • 3.MATLAB代码
    • 参考文献

四、近似熵

1.简介

近似熵(approximate entropy,ApEn)可以定量描述时间序列的复杂程度,序列的复杂性越大,相应的近似熵也越大。近似熵的值受数据量的影响较小,对于非平稳、非线性序列的量化结果稳定,在实际工程中得以广泛应用。

2.基本原理

设有长度为 NNN 的时间序列X=[x1,x2,…,xN]X= [x_{1}, x_{2},…,x_{N} ]X=[x1​,x2​,…,xN​],其近似熵的计算步骤如下:
Step1:将时间序列 XXX 的元素按顺序排列为具有 mmm 维数的向量,即
Xi=[x(i),x(i+1),...,x(i+m−1)]X_{i}=[x(i),x(i+1),...,x(i+m-1)] Xi​=[x(i),x(i+1),...,x(i+m−1)]
式中,i=1,2,…,N−m+1i=1, 2 , … , N-m+1i=1,2,…,N−m+1。
Step2:定义 d[Xi,Xj]d [X_{i}, X_{j}]d[Xi​,Xj​] 为向量 XiX_{i}Xi​ 与 XjX_{j}Xj​ 的距离,则:
d[Xi,Xj]=max∣x(i+k)−x(j+k)∣,k∈(0,m−1)d [X_{i}, X_{j}]=max|x(i+k)-x(j+k)|,k∈(0,m-1) d[Xi​,Xj​]=max∣x(i+k)−x(j+k)∣,k∈(0,m−1)
Step3:记 BiB_{i}Bi​ 为 d[Xi,Xj]≤rd [X_{i}, X_{j}] ≤ rd[Xi​,Xj​]≤r的个数( rrr 为相似容限),并计算 BiB_{i}Bi​ 与全部矢量数 N−m+1N-m+1N−m+1 的比值,即:
Bim(r)=BiN−m+1B^{m}_{i}(r)=\frac{B_{i}}{N-m+1} Bim​(r)=N−m+1Bi​​
Step4:对 Bim(r)B^{m}_{i}(r)Bim​(r) 进行取对数运算,再求其对所有 iii 的平均值,记作 Bm(r)B^{m}(r)Bm(r) ,则有:
Bm(r)=1N−m+1∑i=1N−m+1lnBim(r)B^{m}(r)=\frac{1}{N-m+1}\sum_{i=1}^{N-m+1}lnB^{m}_{i}(r) Bm(r)=N−m+11​i=1∑N−m+1​lnBim​(r)
Step5:令 m=m+1m=m+1m=m+1,并重复 Step1~Step4,即可得到 Bm+1(r)B^{m+1}(r)Bm+1(r) 。
Step6:理论上,此序列的近似熵为:
ApEn(m,r)=lim[Bm(r)−Bm+1(r)],N→∞ApEn(m,r)=lim[B^{m}(r)-B^{m+1}(r)],N→∞ ApEn(m,r)=lim[Bm(r)−Bm+1(r)],N→∞
对于实际的序列,NNN 不可能趋近无穷大,因此近似熵可表示为:
ApEn(m,r,N)=Bm(r)−Bm+1(r)ApEn(m,r,N)=B^{m}(r)-B^{m+1}(r) ApEn(m,r,N)=Bm(r)−Bm+1(r)
近似熵本质上是一个关于序列和参数的统计值,它的大小与数据长度 NNN 、嵌入维数 mmm 和相似容限 rrr 有关。为了得到较好的统计特性以及较小的误差, 数据长度NNN 通常在100~5000 取值,嵌入维数 mmm 一般取 1 或 2,相似容限 rrr 取(0.1~0.25)*stdstdstd,stdstdstd 为序列的标准差。

3.MATLAB代码

% 主程序
clc;
clear;
close all;%% 产生仿真信号
fs = 1000; % 数据采样率
t = (0:1/fs:(1-1/fs));          % 时间
x = cos(50*pi*t+sin(5*pi*t));   % 数据%% 画图
figure;
plot(t,x);
xlabel('t/s');ylabel('幅值');title('信号的时域波形');%% 求仿真信号x的近似熵
m = 2;                                  % 嵌入维数
r0 = 0.2;                               % 相似容限的系数
r = r0*std(x);                          % 相似容限
appEn = ApproximateEntropy(m,r,x);   % 近似熵
% 求近似熵的函数
function appEn = ApproximateEntropy(dim, r, data, tau)
%   近似熵算法的提出者:Pincus S M . Approximate entropy as a measure of system complexity[J]. Proceedings of the National Academy of Sciences ,1991,88(6):2297—2301.
%   Input:
%       dim:嵌入维数(一般取1或者2)
%       r:相似容限( 通常取0.1*Std(data)~0.25*Std(data) )
%       data:时间序列数据,data须为1xN的矩阵
%       tau:下采样延迟时间(在默认值为1的情况下,用户可以忽略此项)
%   Output:
%       appEn:所求数据的近似熵
if nargin < 4tau = 1;
end
if tau > 1data = downsample(data, tau);
endN = length(data);
result = zeros(1,2);for m = dim:dim+1Bi = zeros(N-m+1,1);dataMat = zeros(N-m+1,m);% 设置数据矩阵,构造成m维的矢量for i = 1:N-m+1dataMat(i,:) = data(1,i:i+m-1);end% 利用距离计算相似模式数for j = 1:N-m+1% 计算切比雪夫距离,包括自匹配情况dist = max(abs(dataMat - repmat(dataMat(j,:),N-m+1,1)),[],2);% 统计dist小于等于r的数目D = (dist <= r);% 包括自匹配情况Bi(j,1) = sum(D)/(N-m+1);end% 求所有Bi的均值result(m-dim+1) = sum(log(Bi))/(N-m+1);end
% 计算得到的近似熵值
appEn = result(1)-result(2);end

参考文献

[1] 近似熵理论相关知识与代码实现
[2] Pincus S M . Approximate entropy as a measure of system complexity[J]. Proceedings of the National Academy of Sciences ,1991,88(6):2297—2301.

排列熵、模糊熵、近似熵、样本熵的原理及MATLAB实现之近似熵相关推荐

  1. 排列熵、模糊熵、近似熵、样本熵的原理及MATLAB实现之模糊熵

    目录 二.模糊熵 1.概念 2.基本原理 3.MATLAB代码 4.参考文献 说明:关于排列熵的内容请阅读博客:排列熵.模糊熵.近似熵.样本熵的原理及MATLAB实现 二.模糊熵 1.概念 在样本熵的 ...

  2. 排列熵、模糊熵、近似熵、样本熵的原理及MATLAB实现

    目录 一.排列熵 1.概念 2.基本原理 补充说明 3.MATLAB代码 参考文献 一.排列熵 1.概念 一种检测动力学突变和时间序列随机性的方法,能够定量评估信号序列中含有的随机噪声. 2.基本原理 ...

  3. 近似熵 样本熵 模糊熵

    特征提取field 表征信号序列复杂程度的无量纲指标,熵值越大代表信号复杂度越大. 应用:机械设备状态监测.故障诊断以及心率.血压信号检测 优点:抵抗环境干扰 1. 近似熵 Def: 近似熵(Appr ...

  4. 【熵与特征提取】基于“信息熵”的特征指标及其MATLAB代码实现(功率谱熵、奇异谱熵、能量熵)

    <三体>中对监听员的日常工作有这样一段描述: ...1379 号监听站已经存在了上千年,像这样的监听站,在三体世界中有⼏千个,它们全神贯注地聆听着宇宙间可能存在的智慧⽂明的信息... .. ...

  5. matlab 值法确定各指标权重,Matlab学习系列19. 熵值法确定权重

    19. 熵值法确定权重 一.基本原理 在信息论中,熵是对不确定性的一种度量.信息量越大,不确定性就越小,熵也就越小:信息量越小,不确定性越大,熵也越大. 根据熵的特性,可以通过计算熵值来判断一个事件的 ...

  6. 用matlab实现熵权法,熵权法原理及matlab代码实现

    参考原理博客地址https://blog.csdn.net/u013713294/article/details/53407087 一.基本原理 在信息论中,熵是对不确定性的一种度量.信息量越大,不确 ...

  7. 【综合评价分析】熵权算法确定权重 原理+完整MATLAB代码+详细注释+操作实列

    [综合评价分析]熵权算法确定权重 原理+完整MATLAB代码+详细注释+操作实列 文章目录 1. 熵权法确定指标权重 (1)构造评价矩阵 Ymn (2)评价矩阵标准化处理 (3)计算指标信息熵值 Mj ...

  8. MATLAB秦九韶多项式求值算法的原理和迭代法求解的近似数值方法。

    1..熟悉常用的Matlab操作: 2.了解秦九韶多项式求值算法的原理和迭代法求解的近似数值方法. 秦九韶多项式求值算法: 迭代法求解的近似数值: x=2; for k=1:10x=(x+2/x)/2 ...

  9. 模糊熵 matlab,近似熵/模糊熵/样本熵MATLAB代码

    [实例简介]近似熵.模糊熵和样本熵的MATLAB代码,可用于信号特征提取,比如轴承振动信号特征处理,脑电波信号等时间序列信号 [实例截图] [核心代码] function [apen] = appro ...

最新文章

  1. android获取url参数值,android 获取url 参数值
  2. 学习面试题Day08
  3. 【TensorFlow篇】--Tensorflow框架实现SoftMax模型识别手写数字集
  4. mybatis源码阅读(六) ---StatementHandler了解一下
  5. sudo apt-get nmap 报错锁占用
  6. Spark代码生成技术之现象CodeGenerator
  7. 流行前沿的暗黑APP主题UI设计素材模板
  8. Oracle MERGE用法
  9. 什么是决定计算机内部寄存器,问题解答之 计算机中寄存器定义,分类
  10. 你们这些程序员,真得每天都在读代码吗?
  11. 基于Socket网络编程
  12. 软件开发中的需求种类
  13. 【图片resize】图片三种缩放方式/letterbox_image实现
  14. Linux Base VIII 压缩和解压缩命令
  15. IOS逆向(1)IOS越狱
  16. 130 余个相见恨晚的超实用网站,总有一个用得着
  17. VS2010、SQL Server 2008安装详解
  18. 再谈目前QQ空间主流的赚钱方法
  19. Linux下配置git
  20. 【安全牛学习笔记】w3af

热门文章

  1. centos8 挂载ntfs_CentOS系统挂载U盘、NTFS移动硬盘
  2. 1407 排名靠前的旅行者
  3. AdaBoost公式简单版本的推导
  4. 教您用数学课件制作工具演示线变二面角
  5. 一种字符编码猜测工具的实现方法
  6. Javafx+MySQL 学生成绩管理系统
  7. 51Nod-1299-监狱逃离
  8. android翻盖手机双屏显示,使用双屏翻盖手机是一种怎样的体验?
  9. 校外活动计算机社团策划书,社团活动策划
  10. 安全修复之Web——Spring Framework 远程代码执行漏洞