Main Content

ARMAX 및 OE 모델에 상응하는 상태공간 추정하기

이 예제에서는 상태공간 추정 방법을 사용하여 ARMAX 및 OE 형식 모델을 추정하는 방법을 보여줍니다.

상태공간 모델 구조를 사용하여 다중 출력 ARMAX 및 출력 오차(OE) 모델에 상응하는 모델을 추정할 수 있습니다.

  • armax 모델의 경우, 상태공간 모델에 대해 K 행렬을 추정하도록 지정합니다.

  • oe 모델의 경우, K=0을 설정합니다.

결과로 생성된 모델을 idpoly 모델로 변환하여 일반적으로 정의된 ARMAX 또는 OE 형식으로 표시합니다.

측정된 데이터를 불러옵니다.

load iddata1 z1

상태공간 모델을 추정합니다.

mss_noK = n4sid(z1,2,'DisturbanceModel','none');
mss = n4sid(z1,2);

mss_noK는 추정 중에 사용된 외란 모델이 없는 2차 상태공간 모델입니다. mss도 2차 상태공간 모델이지만 추정된 잡음 성분이 있습니다. 두 모델 모두 측정된 데이터 세트 z1을 추정에 사용합니다.

상태공간 모델을 다항식 모델로 변환합니다.

mOE = idpoly(mss_noK);
mARMAX = idpoly(mss);

다항식 모델로 변환하면 mOEmARMAX에 대한 파라미터 공분산 정보를 잃게 됩니다.

다음 중 하나를 사용하여 공분산을 다시 계산할 수 있습니다.

  • 동일한 추정 데이터를 사용한 반복 없는 업데이트

  • 가우스 근사식 기반의 변환인 translatecov를 사용해 mss_noKmss의 공분산을 mOEmARMAX의 공분산으로 변환

반복 없는 업데이트를 통해 다항식 모델의 파라미터에 대해 mOEmARMAX를 다시 추정합니다.

opt = polyestOptions;
opt.SearchOptions.MaxIterations = 0;

mOE = polyest(z1,mOE,opt);
mARMAX = polyest(z1,mARMAX,opt);

options 객체인 optmOEmARMAX에 대한 반복 없는 업데이트를 지정합니다. 따라서 모델 파라미터는 변경되지 않고 이들 파라미터의 공분산 정보만 업데이트됩니다.

또는 translatecov를 사용하여 추정된 모델을 다항식 형식으로 변환할 수 있습니다.

fcn = @(x)idpoly(x);
mOEt = translatecov(fcn,mss_noK);
mARMAXt = translatecov(fcn,mss);

polyesttranslatecov가 서로 다른 계산 알고리즘을 사용하기 때문에 반복 없는 업데이트를 실행하여 구한 공분산 데이터와 translatecov를 사용하여 구한 공분산 데이터가 일치하지 않을 수 있습니다.

present(mOE)present(mARMAX)를 사용하여 모델 파라미터의 불확실성을 확인할 수 있습니다.

상태공간 모델을 K=0(출력 오차(OE) 형식)과 함께 사용하여 명령줄에서 Hammerstein-Wiener 추정을 초기화할 수 있습니다. 이 초기화를 통해 모델의 피팅이 개선될 수 있습니다. Initialize Hammerstein-Wiener Estimation Using Linear Model 항목을 참조하십시오.

ARMAX 및 OE 모델에 대한 자세한 내용은 입력-출력 다항식 모델 항목을 참조하십시오.