Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

approximateEntropy

비선형 시계열의 규칙성 척도

설명

예제

approxEnt = approximateEntropy(X)는 위상 공간을 재구성하여 균일하게 샘플링된 시간 영역 신호 X의 근사 엔트로피를 추정합니다. 근사 엔트로피는 시계열을 따라 규칙성의 양과 변동의 예측 불가능성을 수량화하는 척도입니다.

예제

approxEnt = approximateEntropy(X,lag)는 시간 지연 lag에 대한 근사 엔트로피를 추정합니다.

예제

approxEnt = approximateEntropy(X,[],dim)은 임베딩 차원 dim에 대한 근사 엔트로피를 추정합니다.

예제

approxEnt = approximateEntropy(X,lag,dim)은 시간 지연 lag와 임베딩 차원 dim에 대한 근사 엔트로피를 추정합니다.

예제

approxEnt = approximateEntropy(___,Name,Value)는 하나 이상의 Name,Value 쌍의 인수로 지정된 추가 옵션을 사용하여 근사 엔트로피를 추정합니다.

예제

모두 축소

이 예제에서는 비교를 위해 2개의 신호, 즉 랜덤 신호 xRand와 완전히 규칙적인 신호 xReg를 생성합니다. 랜덤 신호의 재현이 가능하도록 rngdefault로 설정합니다.

rng('default');
xRand = double(randn(100,1)>0);
xReg = repmat([1;0],50,1);

랜덤 신호와 규칙적 신호를 시각화합니다.

figure;
subplot(2,1,1);
plot(xRand);
title('Random signal');
subplot(2,1,2);
plot(xReg);
title('Perfectly regular signal');

Figure contains 2 axes objects. Axes object 1 with title Random signal contains an object of type line. Axes object 2 with title Perfectly regular signal contains an object of type line.

플롯은 규칙적 신호가 랜덤 신호보다 더 예측 가능함을 보여줍니다.

두 신호의 근사 엔트로피를 구합니다.

valueReg = approximateEntropy(xReg)
valueReg = 5.1016e-05
valueIrreg = approximateEntropy(xRand)
valueIrreg = 0.6849

완전히 규칙적인 신호의 근사 엔트로피는 랜덤 신호보다 현저히 작습니다. 따라서 많은 반복 패턴이 포함된 완전히 규칙적인 신호의 근사 엔트로피 값은 비교적 작은 반면, 예측이 더 어려운 랜덤 신호의 근사 엔트로피 값은 더 큽니다.

이 예제에서는 원형 경로를 따르는 쿼드콥터의 위치 데이터를 살펴봅니다. 파일 uavPositionData.mat에는 콥터가 순회하는 x, y, z 방향 위치 데이터가 포함되어 있습니다.

데이터 세트를 불러와서 쿼드콥터 경로를 3차원으로 시각화합니다.

load('uavPositionData.mat','xv','yv','zv');
plot3(xv,yv,zv);

Figure contains an axes object. The axes object contains an object of type line.

이 예제에서는 x 방향 위치 데이터만 계산에 사용합니다. Lag를 알 수 없으므로 phaseSpaceReconstruction을 사용하여 지연을 추정합니다. 'Dimension'을 3으로 설정합니다. DimensionLag 파라미터는 데이터의 근사 엔트로피를 계산하는 데 필요합니다.

dim = 3;
[~,lag] = phaseSpaceReconstruction(xv,[],dim)
lag = 4

이전 단계에서 얻은 Lag 값을 사용하여 근사 엔트로피를 구합니다.

approxEnt = approximateEntropy(xv,lag,dim)
approxEnt = 0.1088

쿼드콥터가 고정 반경의 미리 정의된 원형 궤적을 순회하므로 위치 데이터는 규칙적입니다. 따라서 근사 엔트로피 값이 낮습니다.

입력 인수

모두 축소

균일하게 샘플링된 시간 영역 신호로, 벡터, 배열 또는 타임테이블로 지정됩니다. X에 여러 개의 열이 있는 경우 approximateEntropyX를 다변량 신호로 처리하여 근사 엔트로피를 계산합니다.

X가 행 벡터로 지정된 경우 approximateEntropy는 X를 일변량 신호로 처리합니다.

임베딩 차원으로, 스칼라 또는 벡터로 지정됩니다. dim은 'Dimension' 이름-값 쌍과 동일합니다.

시간 지연으로, 스칼라 또는 벡터로 지정됩니다. lag는 'Lag' 이름-값 쌍과 동일합니다.

이름-값 인수

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.

예: ...,'Dimension',3

임베딩 차원으로, 'Dimension'과 함께 스칼라 또는 벡터가 쉼표로 구분되어 지정됩니다. Dimension이 스칼라인 경우 X의 모든 열은 Dimension을 사용하여 재구성됩니다. DimensionX의 열 개수와 동일한 길이를 가진 벡터인 경우 열 i의 재구성 차원은 Dimension(i)입니다.

시스템의 차원에 따라 Dimension을 지정합니다. 임베딩 차원에 대한 자세한 내용은 phaseSpaceReconstruction 항목을 참조하십시오.

위상 공간 재구성의 지연으로, 'Lag'와 함께 스칼라가 쉼표로 구분되어 지정됩니다. Lag가 스칼라인 경우 X의 모든 열은 Lag를 사용하여 재구성됩니다. LagX의 열 개수와 동일한 길이를 가진 벡터인 경우 열 i의 재구성 지연은 Lag(i)입니다.

지연 값이 너무 작으면 데이터에 랜덤 잡음이 발생합니다. 반대로, 지연 값이 너무 크면 재구성된 동특성이 시계열의 실제 동특성을 나타내지 않습니다. 최적의 지연을 계산하는 방법에 대한 자세한 내용은 phaseSpaceReconstruction 항목을 참조하십시오.

유사성 기준으로, 'Radius'와 함께 스칼라가 쉼표로 구분되어 지정됩니다. 유사성 반지름이라고도 하는 유사성 기준은 데이터의 변동이 유사한 것으로 간주되는 의미 있는 범위를 식별하는 데 사용되는 조정 파라미터입니다.

Radius의 디폴트 값은 다음과 같습니다.

  • X에 단일 열이 있는 경우 0.2*std(X).

  • X에 여러 개의 열이 있는 경우 0.2*sqrt(trace(cov(X))).

출력 인수

모두 축소

비선형 시계열의 근사 엔트로피로, 스칼라로 반환됩니다. 근사 엔트로피는 시계열 변동의 예측 불가능성을 수량화하는 규칙성 통계량입니다. 비교적 높은 근사 엔트로피 값은 비슷한 패턴의 관측값 다음에 추가로 비슷한 관측값이 나오지 않을 수 있음을 나타냅니다.

예를 들어, 두 개의 이진 신호 S1S2가 있다고 가정하겠습니다.

S1 = [0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1];

S2 = [1 1 0 1 1 1 1 0 1 0 1 0 0 0 0 1];

신호 S101이 번갈아 나오므로 완전히 규칙적인 신호입니다. 즉, 이전 값을 알고 있으면 다음 값을 예측할 수 있습니다. 그러나 신호 S2에서는 이전 값을 미리 알고 있어도 다음 값을 알 수 없습니다. 따라서 신호 S2는 랜덤 신호이고 예측이 어렵습니다. 즉, 많은 반복 패턴을 포함하는 신호는 approxEnt 값이 비교적 작은 반면 예측이 어려운 신호는 approxEnt 값이 비교적 큽니다.

approximateEntropy를 규칙성의 척도로 사용하여 시계열 내의 복잡도 수준을 수량화합니다. 데이터 세트 내의 복잡도 수준을 식별하는 기능은 진동 및 음향 신호를 연구하여 부품의 고장을 추정하는 엔지니어링 분야나, 예를 들어 뇌전도(EEG) 패턴을 관찰하여 발작 가능성을 예측하는 임상 영역에서 유용합니다.[2][3]

알고리즘

근사 엔트로피는 다음과 같은 방법으로 계산됩니다.

  1. approximateEntropy 함수가 먼저 임베딩 차원이 m이고 지연이 τN개의 데이터 점에 대해 지연된 재구성 Y1:N을 생성합니다.

  2. 그런 다음 점 i에서 범위 내 점 개수가 계산됩니다. 이때

    Ni=i=1,ikN1(YiYk<R)

    입니다. 여기서 1은 지표 함수이고 R은 유사성 반지름입니다.

  3. 그런 다음 근사 엔트로피가 approxEnt=ΦmΦm+1로 계산됩니다. 여기서

    Φm=(Nm+1)1i=1Nm+1log(Ni)

참고 문헌

[1] Pincus, Steven M. "Approximate entropy as a measure of system complexity." Proceedings of the National Academy of Sciences. 1991 88 (6) 2297-2301; doi:10.1073/pnas.88.6.2297.

[2] U. Rajendra Acharya, Filippo Molinari, S. Vinitha Sree, Subhagata Chattopadhyay, Kwan-Hoong Ng, Jasjit S. Suri. "Automated diagnosis of epileptic EEG using entropies." Biomedical Signal Processing and Control Volume 7, Issue 4, 2012, Pages 401-408, ISSN 1746-8094.

[3] Caesarendra, Wahyu & Kosasih, P & Tieu, Kiet & Moodie, Craig. "An application of nonlinear feature extraction-A case study for low speed slewing bearing condition monitoring and prognosis." IEEE/ASME International Conference on Advanced Intelligent Mechatronics: Mechatronics for Human Wellbeing, AIM 2013.1713-1718. 10.1109/AIM.2013.6584344.

[4] Kantz, H., and Schreiber, T. Nonlinear Time Series Analysis. Cambridge: Cambridge University Press, 2003.

확장 기능

C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.

버전 내역

R2018a에 개발됨