matlab计算样本熵

Posted andrew-address

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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:Users25626Desktop滤波后数据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

  

以上是关于matlab计算样本熵的主要内容,如果未能解决你的问题,请参考以下文章

排列熵模糊熵近似熵样本熵的原理及MATLAB实现之近似熵

排列熵模糊熵近似熵样本熵的原理及MATLAB实现

熵权法求权重原理详细步骤附matlab代码

熵权法求权重原理详细步骤附matlab代码

脑电信号基于matlab小波变换+样本熵的癫痫脑电信号特征提取含Matlab源码 1154期

数字信号去噪基于matlab麻雀搜索算法优化VM数字信号去噪(目标函数样本熵)含Matlab源码 2039期