📄 apen.m
字号:
%% Aproximate Entropy of a time series
%% apen(S,m,r)
%% S=time series m=pattern length r=similarity criterion
function app_entropy=apen(simout,m,r) % Getting the input data from various modulations
S=simout;
N1=length(S)-m+1; % No of total patterns
N2=length(S)-m;
main1=zeros(N1,m);
main2=zeros(N2,m+1);
sim_patt1=zeros(N1,1); % Storing the number of similar patterns for m
fraction_sim1=zeros(N1,1); % Fraction of patterns similar to i th pattern for m
sim_patt2=zeros(N2,1); % Storing the number of similar patterns for m+1
fraction_sim2=zeros(N2,1); % Fraction of patterns similar to i th pattern for m+1
% Partioning into all possible patterns
for i=1:m
main11(:,i)=S( [1:N1] + i-1 );
end
for i=1:(m+1)
main22(:,i)=S( [1:N2] + i-1 );
end
for i=1:N1 % Procedure for calculating all patterns in a given time series which are similar to ith pattern
main1=circshift(main11,-i+1);
diff_matrix1= abs ( cumsum(diff(main1)) );
index1=find( diff_matrix1 > r);
q1=mod(index1,length(diff_matrix1) );
q1(find(q1==0))=length(diff_matrix1);
sim_patt1(i)=length(diff_matrix1) - length(unique(q1)) + 1;
fraction_sim1(i)=sim_patt1(i)/N1;
end
for i=1:N2
main2=circshift(main22,-i+1);
diff_matrix2= abs ( cumsum(diff(main2)) );
index2=find( diff_matrix2 > r);
q2=mod(index2,length(diff_matrix2) );
q2(find(q2==0))=length(diff_matrix2);
sim_patt2(i)=length(diff_matrix2) - length(unique(q2)) + 1;
fraction_sim2(i)=sim_patt2(i)/N2;
end
stat1=sum(fraction_sim1)/N1;
stat2=sum(fraction_sim2)/N2;
app_entropy=log(stat1/stat2); % Return Value
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -