サンプルエントロピーコード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