仅作为学习记录
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