欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

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

发布时间:2023/12/8 编程问答 48 豆豆
生活随笔 收集整理的这篇文章主要介绍了 排列熵、模糊熵、近似熵、样本熵的原理及MATLAB实现之近似熵 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

说明:“本博文为排列熵、模糊熵、近似熵、样本熵的原理及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+m1)]
式中,i=1,2,…,N−m+1i=1, 2 , … , N-m+1i=1,2,,Nm+1
Step2:定义 d[Xi,Xj]d [X_{i}, X_{j}]d[Xi,Xj] 为向量 XiX_{i}XiXjX_{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]=maxx(i+k)x(j+k)k(0,m1)
Step3:记 BiB_{i}Bid[Xi,Xj]≤rd [X_{i}, X_{j}] ≤ rd[Xi,Xj]r的个数( rrr 为相似容限),并计算 BiB_{i}Bi 与全部矢量数 N−m+1N-m+1Nm+1 的比值,即:
Bim(r)=BiN−m+1B^{m}_{i}(r)=\frac{B_{i}}{N-m+1} Bim(r)=Nm+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)=Nm+11i=1Nm+1lnBim(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)*stdstdstdstdstdstd 为序列的标准差。

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):22972301. % 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实现之近似熵的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。