訊號處理演算法(2) 樣本熵(SampEn)

2021-08-21 08:12:43 字數 1465 閱讀 7412

本文主要介紹樣本熵的物理意義、演算法以及matlab裡**實現。

樣本熵(sample entropy,sampen)與近似熵的物理意義相似(近似熵參見部落格【近似熵理論相關知識與**實現】),都是通過度量訊號中產生新模式的概率大小來衡量時間序列複雜性,新模式產生的概率越大,序列的複雜性就越大。

與近似熵相比,樣本熵具有兩個優勢:樣本熵的計算不依賴資料長度樣本熵具有更好的一致性,即引數m和r的變化對樣本熵的影響程度是相同的。

樣本熵的值越低,序列自我相似性就越高;樣本熵的值越大,樣本序列就越複雜。目前樣本熵在評估生理時間序列(eeg,semg等)的複雜性和診斷病理狀態等方面均有應用。

樣本熵的計算方法如下:

在matlab裡實現樣本熵函式,計算一段時間序列的樣本熵值,**如下:

function sampenval = sampen(data, m, r)

% sampen 計算時間序列data的樣本熵

% 輸入:data是資料一維行向量

% m重構維數,一般選擇1或2,優先選擇2,一般不取m>2

% r 閾值大小,一般選擇r=0.1~0.25*std(data)

% 輸出:sampenval樣本熵值大小

data = data(:)';

n = length(data);

nkx1 = 0;

nkx2 = 0;

for k = n - m:-1:1

x1(k, :) = data(k:k + m - 1);

x2(k, :) = data(k:k + m);

endfor k = n - m:-1:1

x1temprow = x1(k, :);

x1temp = ones(n - m, 1)*x1temprow;

dx1(k, :) = max(abs(x1temp - x1), , 2)';

nkx1 = nkx1 + (sum(dx1(k, :) < r) - 1)/(n - m - 1);

x2temprow = x2(k, :);

x2temp = ones(n - m, 1)*x2temprow;

dx2(k, :) = max(abs(x2temp - x2), , 2)';

nkx2 = nkx2 + (sum(dx2(k, :) < r) - 1)/(n - m - 1);

endbmx1 = nkx1/(n - m);

bmx2 = nkx2/(n - m);

sampenval = -log(bmx2/bmx1);

end

enjoy!

訊號處理演算法(2) 樣本熵(SampEn)

1.物理意義 樣本熵 sample entropy,sampen 與近似熵的物理意義相似 近似熵參見部落格 近似熵理論相關知識與 實現 都是通過度量訊號中產生新模式的概率大小來衡量時間序列複雜性,新模式產生的概率越大,序列的複雜性就越大。與近似熵相比,樣本熵具有兩個優勢 樣本熵的計算不依賴資料長度 ...

樣本均衡問題處理演算法

from imblearn.over sampling import smote over samples smote random state 0 x為去除y和id的資料,y為標籤 label x,y over samples.fit sample x,y ysmote ratio auto ra...

(資源帖)開源訊號處理演算法庫

本帖收集我在網上搜到的幾個訊號處理演算法庫 大部分來自開源中國 1,sp signal processing in c 這是 開源中國 上的乙個國產 訊號處理演算法庫 已發布了3.0版本 2011年發布 簡介如下 sp signal processing in c 是乙個關於訊號處理與數值計算的開源...