matlab 计算信息熵,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

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值