apen.m

来自「针对时间序列的复杂性测试」· M 代码 · 共 57 行

M
57
字号
function [ApEn_value,C_m,C_m_1] = ApEn(signal,m,r_factor)

% Estimate the Aproximate Entropy (ApEn) of a signal.
% m=1 or m=2
% r between 0.1*SD and 0.25*SD, where SD is the signal standard deviation
% N (signal length) between 75 and 5000;
% [ApEn_value] = ApEn(signal,m,r);

% Input variables:
% signal - signal
% m - pattern length
% r_factor - factor of the criterion of similarity   r_factor*std(signal)

% Output variables:
% ApEn_value - ApEn calculated from the signal

% Optional output variables:
% C_m
% C_m_1

signal=signal(:)';
N=length(signal);
% C computation for the "m" pattern.
[C_m] = C_m_computation(signal,m,r_factor);
% C computation for the "m+1" pattern.
[C_m_1] = C_m_computation(signal,m+1,r_factor);


% Phi’s computation.
phi_m=mean(log(C_m));
phi_m_1=mean(log(C_m_1));
% Final ApEn computation.
ApEn_value=[phi_m-phi_m_1];


% -------------------------------------------------------------------
function [C_im] = C_m_computation(signal,m,r_factor)
X=[];C_im=[];n_im=[];max_dif=[];
N=length(signal);

% Construction of the X’s vectors.
for j=1:N-m+1
X(j,:)=signal(j:j+m-1);
end

% C computation.
for j=1:N-m+1
aux1=repmat(X(j,:),N-m+1,1);
dif_aux=abs(X-aux1);
n_im=0;
for k=1:N-m+1
if max(abs(dif_aux(k,:)))<r_factor*std(signal)
n_im=n_im+1;
end
end
C_im=[C_im; n_im/(N-m+1)];
end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?