matlab計算樣本熵


計算14通道得腦電數據嗎,將得出的樣本熵插入Excel表格

a = zeros(1,14);
b = a';
  for i =1:14
      b(i) = SampEn(d1_1(i,1:3000),2,0.2*std(d1_1(i,1:3000)));
  end
xlswrite('C:\Users\25626\Desktop\濾波后數據\14\樣本熵\樣本熵.xlsx',b,'Sheet1','J');%數據寫入A列

  調用的SampEn函數

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);
end

for 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);
end
Bmx1 = Nkx1/(N - m);
Bmx2 = Nkx2/(N - m);
SampEnVal = -log(Bmx2/Bmx1);
end

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM