目录

  • 一、排列熵
    • 1.概念
    • 2.基本原理
      • 补充说明
    • 3.MATLAB代码
    • 参考文献

一、排列熵

1.概念

一种检测动力学突变和时间序列随机性的方法,能够定量评估信号序列中含有的随机噪声。

2.基本原理

(1) 对一组长度为N的时间序列X进行相空间重构,得到矩阵Y为

其中,m为嵌入维数,t为延迟时间,K=N-(m-1)t。
矩阵Y中的每一行都是一个重构分量,共有K个重构分量。

(2) 将每一个重构分量按照升序重新排列,得到向量中各元素位置的列索引构成一组符号序列。
m维相空间映射不同的符号序列总共有m!种。

(3) 计算每一种符号序列出现的次数除以m!种不同的符号序列出现的总次数作为该符号序列出现的概率。
(4) 时间序列X的排列熵的计算公式为:
(5) 排列熵的最大值为ln(m!),将排列熵值进行归一化处理,即:
排列熵值的大小表示时间序列X的随机程度:熵值越小,说明时间序列越简单、规则;反之,熵值越大,则时间序列越复杂、随机。

说明: 我之前看排列熵的理论一直看不懂,搞不清排列熵的计算过程,直到我认真阅读排列熵算法的代码,并且结合理论,才终于搞清楚。建议读者阅读排列熵的代码时,边调试边思考,有助于理解。

补充说明

关于计算每一种符号序列出现的次数除以m!种不同的符号序列出现的总次数作为该符号序列出现的概率的理解
假设有时间序列
X={x(1),x(2),x(3),x(4),x(5),x(6),x(7),x(8),x(9),x(10),x(11),x(12)}={2,5,3,4,6,7,9,5,3,7,9,2};
计算信号的排列熵时,设延迟时间t为1,嵌入维数m为3,则时间序列重构后的矩阵Y为
{x(1),x(2),x(3);
x(2),x(3),x(4);
x(3),x(4),x(5);
x(4),x(5),x(6);
x(5),x(6),x(7);
x(6),x(7),x(8);
x(7),x(8),x(9);
x(8),x(9),x(10);
x(9),x(10),x(11);
x(10),x(11),x(12)}
矩阵Y中的每一行都是一个重构分量,所以重构分量的个数K=10,则每一个重构分量按照升序重新排列后各元素位置的列索引构成一组符号序列,所以矩阵Y各个元素的索引构成的矩阵为
{1,3,2;
2,3,1;
1,2,3;
1,2,3;
1,2,3;
3,1,2;
3,2,1;
2,1,3;
1,2,3;
3,1,2;}
由于嵌入维数m=3,符号序列共有3!=6种:((1,2,3),(1,3,2),(2,1,3),(2,3,1),(3,1,2),(3,2,1))。
上述10个重构分量的符号序列中,不同的符号序列出现的次数为:
(1,2,3)为4次,(1,3,2)为2次,(2,1,3)为1次,(2,3,1)为0次,(3,1,2)为2次,(3,2,1)为1次,所以6种符号序列出现的总次数为10次(实际只有5种符号序列,即此时k=5,小于3!=6种,这句话是对第(2)步中k的解释)。

3.MATLAB代码

%% 主函数调用排列熵函数求时间序列的排列熵值
load X;
[m,n]=size(X);  % X为时间序列,一行为一个时间序列。
% 求排列熵:pe为排列熵
M = 3;  % 嵌入维数
T = 1;  % 延迟时间
pe=zeros(1,m);
for i=1:m[pe(i),~] = PermutationEntropy(X(i,:),M,T);
end
%% 排列熵算法
function [pe ,hist] = PermutationEntropy(y,m,t)%  Calculate the permutation entropy(PE)
%  排列熵算法的提出者:Bandt C,Pompe B. Permutation entropy:a natural complexity measure for time series[J]. Physical Review Letters,2002,88(17):174102.%  Input:   y: time series;
%           m: order of permuation entropy 嵌入维数
%           t: delay time of permuation entropy,延迟时间% Output:
%           pe:    permuation entropy
%           hist:  the histogram for the order distribution
ly = length(y);
permlist = perms(1:m);
[h,~]=size(permlist);
c(1:length(permlist))=0;for j=1:ly-t*(m-1)[~,iv]=sort(y(j:t:j+t*(m-1)));for jj=1:hif (abs(permlist(jj,:)-iv))==0c(jj) = c(jj) + 1 ;endendend
hist = c;
c=c(c~=0);
p = c/sum(c);
pe = -sum(p .* log(p));
% 归一化
pe=pe/log(factorial(m));
end

参考文献

[1]赵昕海,张术臣,李志深,等.基于VMD的故障特征信号提取方法[J].振动、测试与诊断,2018,38(1):11-13.
[2]排列熵matlab实现

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

  1. 【熵与特征提取】从近似熵,到样本熵,到模糊熵,再到排列熵,究竟实现了什么?(第一篇)——近似熵及其MATLAB实现

    在特征提取领域,近似熵.样本熵.排列熵和模糊熵是比较经常出现的概念. 首先一句话总结一下:这几个熵值都是用来表征信号序列复杂程度的无量纲指标,熵值越大代表信号复杂度越大.信号复杂程度的表征在机械设备状 ...

  2. 【熵与特征提取】从近似熵,到样本熵,到模糊熵,再到排列熵,究竟实现了什么?(第四篇)——“排列熵”及其MATLAB实现

    今天讲排列熵,之前用了三篇文章分别讲述了近似熵.样本熵和模糊熵: Mr.看海:[熵与特征提取]从近似熵,到样本熵,到模糊熵,再到排列熵,究竟实现了什么?(第一篇)--"近似熵"及其 ...

  3. 近似熵、样本熵、模糊熵、排列熵摘抄总结

    本文总结摘抄于多个网上链接,用于学习和整理用途 1.模糊熵.样本熵.近似熵都是什么?反映了什么? 2.近似熵理论相关知识与代码实现 3.样本熵理论相关知识与代码实现 4.模糊熵理论相关知识与代码实现 ...

  4. 近似熵 样本熵 模糊熵

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

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

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

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

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

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

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

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

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

  9. 【Python】近似熵,样本熵,模糊熵计算高效版

    文章目录 前言 整体思路 1 近似熵(Approximate Entropy, ApEn) 1.1 理论基础 1.2 python第三方库实现 1.3 基于多线程numpy矩阵运算实现 2 样本熵 ( ...

  10. MATLAB实现各种熵:香农熵、条件熵、模糊熵、样本熵等

    MATLAB实现各种熵:香农熵.条件熵.模糊熵.样本熵等 0 引言 1 香农熵Shannon Entropy 1.1 基本原理 1.2 信息熵的3个性质 1.3 MATLAB代码实现 2 两随机变量系 ...

最新文章

  1. centos make 升级_CentOS更改yum源与更新系统
  2. 简单回声服务器的实现
  3. Tomcat - 源码分析Tomcat是如何处理一个Servlet请求的
  4. Redisson官方文档 - 目录
  5. 六大举措建云管理模式助力企业转型升级
  6. raid ahci模式哪个好_比群晖好用?威联通TR-004磁盘阵列外接盒使用详解
  7. python 字典排序 lambda_Python使用lambda表达式对字典排序操作示例
  8. 光纤收发器的原理及应用_基于砷化镓传感器的光纤测温原理及其在地铁中的应用...
  9. CentOS下yum安装mcrypt错误:No package php-mcrypt available.解决方法
  10. 路由器用到坏才换?路由器你在乎哪些功能?
  11. 【java学习之路】(java框架)011.SpringMVC入门
  12. MATLAB函数之image、imagesc、imshow的用法
  13. SpiceWorks:企业接纳Windows 10的增速是Windows 7的两倍
  14. 同一局域网入侵_局域网IP地址冲突、环路?千兆接入交换机选型很重要
  15. 网络安全等级保护的过程
  16. html项目符号正方形,css如何添加列表项目符号
  17. “少年派”生命里的上帝与野兽
  18. 产生伪随机数两种常用算法
  19. python 自己选择excel保存的位置
  20. 留着以后慢慢做的计算几何(题表)

热门文章

  1. 个性化推荐的十大挑战
  2. UE4学习之路【八】通过蓝图接口制作一个简易门
  3. 上篇 | 使用 Transformers 进行概率时间序列预测
  4. SLAM十四讲:第三讲习题
  5. SLAM面试问题总结(转)
  6. July 30, 10:00-16:45, 1309 多项式方法在调和分析问题中的应用
  7. 2017~2018学年《信息安全》考试试题(A2卷)
  8. 与朋友分享一些关于饮食的名言
  9. 世界上没有人能活着看完的四个故事!!!!!!
  10. 汽车融资租赁公司如何实现业务流程化管理和强大风控管理