apen.m

来自「This program calculates Approximate Entr」· M 代码 · 共 60 行

M
60
字号
%% 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 + =
减小字号Ctrl + -
显示快捷键?