排列熵、模糊熵、近似熵、样本熵的原理及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+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实现之近似熵的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软件测评概要总结-中科软测认证中心
- 下一篇: win7 打开防火墙端口