本文主要介紹樣本熵的物理意義、演算法以及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 是乙個關於訊號處理與數值計算的開源...