样本熵代码matlab2019a

仅作为学习记录

function Samp = entropy(data,m,r)

u = data;
N = length(u); 
%  构造一组 m 维向量 
for i = 1:(N - m + 1) 
     for k = 0:(m - 1) 
         Xm1(i,1 + k) = u(i + k);      %Xm 即为第一组 m 维向量 
     end 
end 

%计算任意两个 m 维向量之间的距离 
for i = 1:(N - m + 1) 
     temprow1 = Xm1(i,:); 
     temp1 = ones(N - m + 1,1)*temprow1; 
     d1(i,:) = max(abs(temp1 - Xm1),[],2)'; 
end 
%******************************************************* 
r = r * std(u); 
%计算 d1 中比 r 小的数值的个数 
for i = 1:(N - m + 1) 
     q1(i,1) = sum(d1(i,:)<r) - 1;  end 
Cr1 = q1/(N - m);     %模板匹配概率,距离 
Cm1 = sum((Cr1)')/(N - m + 1); %均值 
 
%************************************************************** 
%构建一组 m+1 维向量 
for i = 1:(N - m) 
     for k = 0:m 
         Xm2(i,1 + k) = u(i + k);      %Xm 即为第二组 m+1 维向量 
     end 
end 
 
%计算任意两个 m+1 维向量之间的距离 
 
for i = 1:(N - m) 
     temprow2 = Xm2(i,:); 
     temp2 = ones(N - m,1)*temprow2; 
     d2(i,:) = max(abs(temp2 - Xm2),[],2)'; 
end 
%******************************************************** 
 
for i = 1:(N - m) 
     q2(i,1) = sum(d2(i,:)<r) - 1;  
end 
Cr2 = q2/(N - m - 1);     %模板匹配概率 
Cm2 = sum((Cr2)')/(N - m); %均值 
 
Samp = -log(Cm2/Cm1); 
%Samp = Xm2; 


end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值