样本熵代码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
发布了71 篇原创文章 · 获赞 9 · 访问量 6544

猜你喜欢

转载自blog.csdn.net/weixin_41529093/article/details/104684887
今日推荐