排列熵、模糊熵、近似熵、樣本熵的原理及MATLAB實現

1、排列熵

1.概念

一種檢測動力學突變和時間序列隨機性的方法,可以定量評估信號序列中含有的隨機噪聲。算法

2.基本原理

(1) 對一組長度爲N的時間序列X進行相空間重構,獲得矩陣Y爲
在這裏插入圖片描述
其中,m爲嵌入維數,t爲延遲時間,K=N-(m-1)t。
矩陣Y中的每一行都是一個重構份量,共有K個重構份量。


函數

(2) 將每個重構份量按照升序從新排列,獲得向量中各元素位置的列索引構成一組符號序列。
在這裏插入圖片描述m維相空間映射不一樣的符號序列總共有m!種。
測試

(3) 計算每一種符號序列出現的次數除以m!種不一樣的符號序列出現的總次數做爲該重構份量的機率。
在這裏插入圖片描述(4) 時間序列X的排列熵的計算公式爲:
在這裏插入圖片描述
(5) 排列熵的最大值爲ln(d!),將排列熵值進行歸一化處理,即:
在這裏插入圖片描述排列熵值的大小表示時間序列X的隨機程度:熵值越小,說明時間序列越簡單、規則;反之,熵值越大,則時間序列越複雜、隨機。



spa

說明: 我以前看排列熵的理論一直看不懂,搞不清排列熵的計算過程,直到我認真閱讀排列熵算法的代碼,而且結合理論,才終於搞清楚。建議讀者閱讀排列熵的代碼時,邊調試邊思考,有助於理解。.net

3.MATLAB代碼

%% 主函數調用排列熵函數求時間序列的排列熵值

[m,n]=size(X);  % X爲時間序,一行爲一個時間序列。

% 相空間重構:eDim爲嵌入維數,eLag爲延遲時間
% 當X具備多列和多行時,每列將被視爲獨立的時間序列,該算法對X的每一列假設相同的時間延遲和嵌入維度,並以標量返回ESTDIM和ESTLAG。
[~,eLag,eDim] = phaseSpaceReconstruction(X);

% 求排列熵:pe爲排列熵
pe=zeros(1,m);
for i=1:m
    [pe(i),~] = pec(X(i,:),eDim,eLag);
end

%% 排列熵算法
function [pe ,hist] = pec(y,m,t)

%  Calculate the permutation entropy

%  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);
c(1:length(permlist))=0;
    
 for j=1:ly-t*(m-1)
     [~,iv]=sort(y(j:t:j+t*(m-1)));
     for jj=1:length(permlist)
         if (abs(permlist(jj,:)-iv))==0
             c(jj) = c(jj) + 1 ;
         end
     end
 end
hist = c;
c=c(find(c~=0));
p = c/sum(c);
pe = -sum(p .* log(p));

參考文獻

[1]趙昕海,張術臣,李志深,等.基於VMD的故障特徵信號提取方法[J].振動、測試與診斷,2018,38(1):11-13.
[2]排列熵matlab實現
調試

相關文章
相關標籤/搜索