Main Content

predict

식별된 모델의 향후 K-스텝 출력 사전 예측

설명

predict 명령은 측정된 입력-출력 데이터를 사용하여 식별된 모델의 향후 K-스텝 출력을 계산합니다. 모델을 식별하려면 먼저 모든 입력-출력 데이터를 수집한 다음 오프라인으로 모델 파라미터를 추정하십시오. 실시간 데이터를 사용하여 비선형 시스템의 온라인 상태를 추정하려면 확장 칼만 필터 및 무향 칼만 필터를 위한 predict 명령을 대신 사용하십시오.

예제

yp = predict(sys,data,K)는 측정된 입력-출력 데이터를 사용하여 식별된 모델 sys의 향후 K 스텝 출력을 사전 예측합니다.

predict 명령은 측정된 데이터의 시간 길이에 걸쳐 출력 응답을 예측합니다. 대조적으로, forecast는 측정된 데이터의 마지막 시점을 넘어선 시간 범위에서 미래에 대해 예측합니다. 측정된 데이터의 시간 길이에 걸쳐 sys를 검증하려면 predict를 사용하십시오.

data는 timetable형, 쉼표로 구분된 입력/출력 행렬 쌍, 단일 행렬 또는 iddata 객체나 idfrd 객체와 같은 데이터 객체일 수 있습니다.

예제

yp = predict(sys,data,K,opt)는 옵션 세트 opt를 사용하여 초기 조건 및 데이터 오프셋의 처리와 같은 추가 예측 옵션을 지정합니다.

예제

[yp,ic,sys_pred] = predict(___)는 초기 조건 ic와 예측 모델 sys_pred에 대해 추정된 값도 반환합니다. 이 구문을 위에 열거된 입력 인수와 조합하여 사용하십시오.

predict(sys,data,K,___)는 예측된 출력을 플로팅합니다. 위에 열거된 입력 인수와 조합하여 사용하십시오. 플롯의 표시 옵션을 변경하려면 플롯을 마우스 오른쪽 버튼으로 클릭하여 상황별 메뉴에 액세스합니다. 메뉴에 대한 자세한 내용은 항목을 참조하십시오.

compare 명령을 사용하여 예측된 모델 응답을 플로팅할 수도 있습니다. compare 명령은 예측 결과를 관측된 데이터와 비교하고 피팅의 정량적 적합도를 표시합니다.

predict(sys,Linespec,data,K,___)Linespec를 사용하여 선 유형, 마커 기호, 색을 지정합니다.

predict(sys1,...,sysN,data,K,___)는 여러 식별된 모델에 대해 예측된 출력을 플로팅합니다. predict는 자동으로 색과 선 스타일을 선택합니다.

예제

predict(sys1,Linespec1,...,sysN,LinespecN,data,K,___)는 각 모델에 지정된 선 유형, 마커 기호, 색을 사용합니다.

예제

모두 축소

시계열 데이터를 시뮬레이션합니다.

init_sys = idpoly([1 -0.99],[],[1 -1 0.2]);
opt = simOptions('AddNoise',true);
u = iddata([],zeros(400,0),1);
data = sim(init_sys,u,opt);

data는 시계열 모델의 시뮬레이션된 응답 데이터를 포함하는 iddata 객체입니다.

data를 추정 데이터로 사용하여 ARMAX 모델을 추정합니다.

na = 1;
nb = 2;
sys = armax(data(1:200),[na nb]);

예측 지평을 4로 지정하여 모델의 출력을 예측합니다.

K = 4;
yp = predict(sys,data,K);

ypiddata 객체입니다. 예측된 출력은 객체의 OutputData 속성에 반환됩니다.

예측된 데이터 출력과 추정된 데이터 출력을 비교합니다.

plot(data(201:400),yp(201:400));
legend('Estimation data','Predicted data');

Figure contains an axes object. The axes object with title y1 contains 2 objects of type line. These objects represent Estimation data, Predicted data.

또는, 예측된 응답과 추정 데이터를 플로팅하려면 compare(sys,data,K)를 사용합니다.

추정 데이터를 불러옵니다.

load iddata1;
data = z1;

차수 [2 2 1]의 ARX 모델을 추정합니다.

sys1 = arx(data,[2 2 1]);

극점이 2개인 전달 함수를 추정합니다.

 sys2 = tfest(data,2);

predict 옵션 세트를 생성하여 예측에 대한 초기 조건을 0으로 지정합니다.

opt = predictOptions('InitialCondition','z');

추정된 모델의 예측된 출력을 플로팅합니다. 지정된 예측 옵션 세트 opt를 사용하고 예측 지평을 10으로 지정합니다. 각 시스템의 예측된 출력을 플로팅하기 위한 선 스타일을 지정합니다.

predict(sys1,'r--',sys2,'b',data,10,opt);

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Validation data (y1), sys1, sys2.

표시 옵션을 변경하려면 플롯을 마우스 오른쪽 버튼으로 클릭하여 상황별 메뉴에 액세스하십시오. 예를 들어, 추정 데이터를 보려면 상황별 메뉴에서 검증 데이터 표시를 선택합니다. 예측 오차를 보려면 예측 오차 플롯을 선택합니다.

compare 명령을 사용하여 예측된 응답을 플로팅할 수도 있습니다. 이렇게 하려면 먼저 compare에 대한 옵션 세트를 만들어 초기 조건 0을 사용하도록 지정합니다.

opt = compareOptions('InitialCondition','z');
compare(data,sys1,'r--',sys2,'b',10,opt);

Figure contains an axes object. The axes object contains 3 objects of type line. These objects represent Validation data (y1), sys1: 54.31%, sys2: 70.57%.

추정 데이터를 사용하여 모델을 추정한 다음 predict 명령을 사용하여 예측된 모델 출력 및 예측 모델을 계산합니다. 예측 모델을 시뮬레이션하여 예측된 출력을 재현합니다.

추정 데이터를 불러옵니다.

load iddata3 z3
data = z3;

데이터에서 다항식 모델을 추정합니다.

sys = polyest(z3,[2 2 2 0 0 1]);

예측 지평을 4로 지정하여 시스템 응답을 예측합니다.

K = 4;
[yp,ic,sysp] = predict(sys,data,K);

yp는 예측된 모델 응답이고, ic는 추정된 초기 조건을 포함하며, sysp는 예측 모델입니다.

입력 [data.OutputData,data.InputData]와 초기 조건 ic로 예측 모델을 시뮬레이션합니다.

opt = simOptions;
opt.InitialCondition = ic;
ys = sim(sysp,[data.OutputData,data.InputData],opt);

예측된 출력과 시뮬레이션된 출력을 플로팅합니다.

t = yp.SamplingInstants;
plot(t,yp.OutputData,'b',t,ys,'.r');
legend('Predicted Output','Simulated Output')

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Predicted Output, Simulated Output.

이전에 구한 초기 조건을 모델 예측에 포함합니다.

데이터를 불러옵니다.

load iddata1ic z1i

ARMAX 추정 옵션을 지정하여 초기 상태를 추정합니다.

estimOpt = armaxOptions('InitialCondition','estimate');

ARMAX 모델을 추정하고 초기 조건을 상태공간 형식으로 캡슐화하는 initialCondition 객체 ic를 반환합니다.

na = 2;
nb = 2;
nc = 2;
nk = 1;
[sys,ic] = armax(z1i,[na nb nc nk],estimOpt);

예측을 위한 초기 조건을 지정합니다.

predictOpt = predictOptions('InitialCondition',ic);

모델을 예측하고 모델 응답을 얻습니다. 측정된 데이터와 함께 응답 y를 플로팅합니다.

y = predict(sys,z1i,predictOpt);
plot(z1i,y)
legend('Measured Data','Predicted Response')

Figure contains 2 axes objects. Axes object 1 with title y1 contains 2 objects of type line. These objects represent Measured Data, Predicted Response. Axes object 2 with title u1 contains an object of type line. This object represents Measured Data.

측정된 응답과 예측된 응답은 예측 시작 시 양호한 일치를 보여줍니다.

과거 데이터를 사용해 초기 조건을 지정하여 모델 예측을 수행합니다. 먼저 predict 명령을 사용하여 예측하고 predictOptions 옵션 세트를 사용하여 과거 데이터를 지정합니다. 그런 다음 과거 데이터를 초기 상태에 수동으로 매핑하여 예측된 응답을 재현합니다.

2-입력 1-출력 데이터셋을 불러옵니다.

load iddata7 z7

데이터를 사용하여 5차 상태공간 모델을 식별합니다.

sys = n4sid(z7,5);

데이터셋을 두 부분으로 나눕니다.

zA = z7(1:15);
zB = z7(16:end);

데이터 zB에 대해, 식별된 시스템 응답의 향후 10-스텝 사전 예측을 계산한다고 가정하겠습니다. 초기 조건의 경우 zA의 신호 값을 과거 기록으로 사용합니다. 즉, zB의 데이터 바로 앞의 시간에 대한 입력과 출력을 의미합니다.

IO = struct('Input',zA.InputData,'Output',zA.OutputData);
opt = predictOptions('InitialCondition',IO);

지정된 초기 조건과 predict를 사용하여 데이터 zB에 대한 향후 10-스텝 사전 예측을 생성합니다.

[yp,x0,Predictor] = predict(sys,zB,10,opt);

yp는 예측된 모델 응답이고, x0은 예측 모델 Predictor에 대응하는 초기 상태입니다. yp.OutputData를 재현하기 위해 x0을 초기 조건으로 사용하여 Predictor를 시뮬레이션할 수 있습니다.

이제 과거 데이터를 초기 상태에 수동으로 매핑하여 출력을 재현합니다. 그러기 위해 zA의 시간 길이에 걸쳐 1-스텝 예측 오차를 최소화합니다.

x0est = data2state(sys,zA);

x0estzA의 가장 최근 데이터 샘플 직후 시점에서의 sys의 5가지 상태 값을 포함합니다.

Predictor는 10-스텝 예측 지평으로 인해 원래 시스템보다 더 많은 상태를 갖습니다. 지평에 의해 유도된 추가 상태를 초기값 0으로 지정한 다음 x0est를 추가합니다.

x0Predictor = zeros(order(Predictor),1);
x0Predictor(end-4:end) = x0est;

[zB.OutputData,zB.InputData]를 입력 신호로 사용하고 x0Predictor를 초기 조건으로 사용하여 예측 모델을 시뮬레이션합니다.

uData = [zB.OutputData,zB.InputData]; % signals required for prediction
[ysim,t,xsim] = lsim(Predictor,uData,[],x0Predictor);

predict 명령 yp.OutputData의 예측된 출력과 수동으로 계산된 결과 ysim을 플로팅합니다.

plot(t,yp.OutputData,t,ysim, '.')

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

ysimyp.OutputData와 같습니다.

입력 인수

모두 축소

출력을 예측할 식별된 모델로, 다음 중 하나로 지정됩니다.

모델을 사용할 수 없는 경우 ar, armax, tfest, nlarx, ssest와 같은 명령을 사용하여 data에서 sys를 추정하십시오.

균일하게 샘플링되어 측정된 입력/출력 데이터로, timetable, 쉼표로 구분된 숫자형 입력/출력 행렬 쌍, 단일 숫자형 행렬 또는 iddata 객체로 지정됩니다. data에 대한 지정은 데이터 유형에 따라 다릅니다.

timetable형

data를 일정한 간격의 시간 벡터를 사용하는 timetable형으로 지정합니다. tt에는 입력 채널과 출력 채널을 나타내는 변수가 포함됩니다.

쉼표로 구분된 행렬 쌍

data를 입력 및 출력 시간 영역 신호 값(u,y)을 포함하는 실수 값 행렬의 쉼표로 구분된 쌍으로 지정합니다. 입력 행렬을 차원 Ns×Nu로 지정하고 출력 행렬을 차원 Ns×Ny로 지정합니다. 여기서 Nu는 입력의 개수, Ny는 출력의 개수이며, Ns는 샘플의 개수입니다.

시계열 데이터의 경우 출력 행렬 y만 지정합니다.

단일 행렬

data를 입력 신호 값이 앞에 오고 출력 신호 값이 그 뒤에 오는 Ny+Nu개 열의 실수 값 행렬 하나로 지정합니다. 이 채널 순서는 data의 쉼표로 구분된 행렬 쌍 데이터 형식에 사용되는 순서와 반대입니다.

시계열 데이터의 경우 data를 Ns×Ny 행렬로 지정합니다.

데이터 객체

데이터를 입력 데이터와 출력 데이터를 포함하는 iddata 객체로 지정합니다. 시계열 데이터(입력 없음)의 경우 data를 입력이 없는 iddata 객체로 지정합니다.

추정 데이터형으로 작업하는 방법에 대한 자세한 내용은 Data Types in System Identification Toolbox 항목을 참조하십시오.

예측 지평으로, 다음 중 하나로 지정됩니다.

  • 양의 정수 — 출력 yp는 미래의 K 스텝을 기준으로 계산됩니다. 여기서 Kdata 샘플 시간의 배수를 나타냅니다.

    시점 t에서의 출력은 시간 t-K까지의 이전에 측정된 출력과 시점 t까지의 입력을 사용하여 계산됩니다.

  • Inf — 이전 출력이 계산에 사용되지 않으며 predictsim 명령을 사용하는 시뮬레이션과 동일한 결과를 반환합니다.

출력-오차 모델의 경우 향후 K 스텝 사전 예측과 시뮬레이션된 출력 간에 차이가 없습니다. 이는 출력-오차 모델이 과거 입력만 사용하여 미래 출력을 예측하기 때문입니다.

참고

모델을 신중하게 검증하는 경우, 일반적으로 향후 1-스텝 사전 예측(K = 1)은 측정된 데이터의 시간 범위에 걸쳐 모델 sys를 검증하기에 좋은 테스트가 아닙니다. 심지어 자명한 향후 1-스텝 사전 예측 변수 y^(t)=y(t1)로도 좋은 예측 결과가 나올 수 있습니다. 그래서 좋지 않은 모델도 샘플 시간이 작은 데이터의 향후 1-스텝 사전 예측에서는 양호해 보일 수 있습니다. K = Inf를 사용한 예측은 sim 명령으로 시뮬레이션을 수행하는 것과 동일하며, 특히 적분을 사용한 모델의 경우 데이터의 저주파수 외란이 강조되기 때문에 출력이 발산할 수 있습니다. 1Inf 사이의 K 값을 사용하여 측정된 데이터의 중간 주파수 동작을 포착하십시오.

예측 옵션으로, predictOptions 옵션 세트로 지정됩니다. 옵션 세트를 사용하여 초기 조건 처리 및 데이터 오프셋 처리와 같은 예측 옵션을 지정합니다.

선 스타일, 마커, 색으로, 문자형 벡터로 지정됩니다. 예를 들면 'b' 또는 'b+:'와 같습니다.

Linespec 구성에 대한 자세한 내용은 plot의 Linespec 인수 항목을 참조하십시오.

출력 인수

모두 축소

예측된 출력 응답으로, 다음 중 하나로 반환됩니다.

  • iddata 객체 — dataiddata 객체인 경우입니다. ypOutputData 속성은 예측된 출력의 값을 저장합니다. 시간 변수는 data.SamplingInstants로 표시되는 범위의 값을 취합니다.

  • double형으로 구성된 행렬 — data가 double형으로 구성된 행렬인 경우입니다.

시점 t에서의 출력은 시간 t-K까지의 이전에 측정된 출력과 시점 t까지의 입력을 사용하여 계산됩니다. 즉, 측정된 데이터의 시점 r에서 예측된 응답은 ypr+K-1 샘플에 저장됩니다. 시간 r에서는 예측에 필요한 미래 입력 u(r+1), u(r+2),..., u(r+K)를 안다고 가정합니다. 다중 실험 데이터의 경우 yp에는 각 실험에 대해 예측된 데이터 세트가 포함됩니다. 예측된 출력의 시간 길이는 관측된 데이터의 시간 길이와 일치합니다.

sysidnlhw 모델 또는 idnlgrey 모델을 사용하여 지정되는 경우 ypdata.InputData를 입력으로 사용하여 계산한 시뮬레이션된 응답과 같습니다.

예측 모델 sys_pred에 대응하는 추정된 초기 조건으로, 열 벡터, initialCondition 객체 또는 셀형 배열로 반환됩니다.

  • sys가 선형 전달 함수 또는 다항식 모델이면 icinitialCondition 객체입니다. initialCondition 객체는 sys의 자유 응답을 대응하는 초기 상태 벡터와 함께 상태공간 형식으로 캡슐화합니다.

  • sys가 다른 유형의 선형 또는 비선형 동적 모델이면 ic는 초기 상태 벡터이며, 상태의 개수와 동일한 크기의 열 벡터로 반환됩니다.

  • data에 다중 실험 데이터가 포함된 경우 ic는 크기 Ne로 구성된 셀형 배열입니다. 여기서 Ne는 실험의 개수입니다.

예측 결과를 재현하려면 ic를 초기 조건으로 사용하여 sys_pred를 시뮬레이션할 수 있습니다. 예제는 시뮬레이션을 통해 예측 결과 재현하기 항목을 참조하십시오.

sysidnlarx 모델이면 ic가 빈 상태로 반환됩니다.

예측 모델로, 동적 시스템 모델로 반환됩니다. 다중 실험 데이터의 경우 sys_pred는 각 실험에 대해 하나의 항목이 있는 모델로 구성된 배열입니다. 예측 모델 sys_pred와 추정된 초기 조건 ic를 사용하여 예측의 결과를 재현할 수 있습니다.

  • sys가 선형 모델이면 예측 모델은 sys와 동일한 유형의 모델이나 모델의 상태공간 버전(idss)으로 반환됩니다. 예측 결과를 재현하려면 [data.OutputData data.InputData]를 입력으로, ic를 초기 조건으로 사용하여 sys_pred를 시뮬레이션하십시오. 시뮬레이션 출력은 예측된 출력 yp.OutputData와 동일합니다. 예제는 시뮬레이션을 통해 예측 결과 재현하기 항목을 참조하십시오.

  • sys가 비선형 그레이박스 모델(idnlgrey) 또는 Hammerstein-Wiener 모델(idnlhw)인 경우 모델의 잡음 성분은 자명하며, 따라서 예측 모델은 해당 모델과 동일합니다. sys_pred는 빈 상태로 반환됩니다. 예측의 결과를 재현하려면 ic를 초기 조건으로 사용하여 sys를 시뮬레이션하십시오. idnlhw 모델의 상태에 대한 정의는 Definition of idnlhw States 항목을 참조하십시오.

  • sys가 비선형 ARX 모델(idnlarx)인 경우 sys_predic는 빈 상태로 반환됩니다. 시뮬레이션으로 예측 결과를 재현할 수 없습니다.

샘플 시간 Ts가 0보다 큰 시간 영역 데이터 또는 주파수 영역 데이터인 이산시간 데이터의 경우 sys가 연속시간 모델이더라도 sys_pred는 이산시간 모델입니다.

  • 예측된 출력의 플롯을 마우스 오른쪽 버튼으로 클릭하면 상황별 메뉴가 열립니다. 여기서 다음 옵션에 액세스할 수 있습니다.

    • 시스템 — 예측된 응답을 볼 시스템을 선택합니다. 기본적으로 모든 시스템의 응답이 플로팅됩니다.

    • 데이터 실험 — 다중 실험 데이터만 해당됩니다. 서로 다른 실험의 데이터 간에 전환합니다.

    • 특성 — 다음 데이터 특성을 봅니다.

      • 피크 값 — 데이터의 피크 절댓값을 봅니다. 시간 영역 데이터에만 적용됩니다.

      • 피크 응답 — 데이터의 피크 응답을 봅니다. 주파수 응답 데이터에만 적용됩니다.

      • 평균값 — 데이터의 평균값을 봅니다. 시간 영역 데이터에만 적용됩니다.

    • 표시 — 주파수 영역 데이터와 주파수 응답 데이터에만 해당됩니다.

      • 크기 — 시스템의 주파수 응답의 크기를 봅니다.

      • 위상 — 시스템의 주파수 응답의 위상을 봅니다.

    • 검증 데이터 표시 — 모델 응답을 예측하는 데 사용되는 데이터를 플로팅합니다.

    • I/O 그룹화 — 둘 이상의 입력 채널이나 출력 채널을 포함하는 데이터셋에 사용합니다. 플롯에서 입력 채널과 출력 채널의 그룹화를 선택합니다.

      • 없음 — 별도의 자체 좌표축에 입력-출력 채널을 플로팅합니다.

      • 모두 — 모든 입력 채널을 함께 그룹화하고 모든 출력 채널을 함께 그룹화합니다.

    • I/O 선택기 — 둘 이상의 입력 채널이나 출력 채널을 포함하는 데이터셋에 사용합니다. 플로팅할 입력 채널과 출력 채널의 일부를 선택합니다. 기본적으로 모든 출력 채널이 플로팅됩니다.

    • 그리드 — 플롯에 그리드를 추가합니다.

    • 정규화 — 플롯에 있는 모든 데이터의 y 스케일을 정규화합니다.

    • 전체 보기 — 전체 보기로 돌아갑니다. 기본적으로 플롯은 전체 보기로 스케일링됩니다.

    • 예측 지평 — 예측 지평을 설정하거나 시뮬레이션을 선택합니다.

    • 초기 조건 — 초기 조건의 처리를 지정합니다. 주파수 응답 데이터에는 적용되지 않습니다.

      다음 중 하나로 지정합니다.

      • 추정 — 초기 조건을 추정 파라미터로 처리합니다.

      • 0 — 모든 초기 조건을 0으로 설정합니다.

      • 지연 흡수 및 추정 — 0이 아닌 지연을 모델 계수에 흡수하고 초기 조건을 추정 파라미터로 취급합니다. 이 옵션은 이산시간 모델에만 사용됩니다.

    • 예측된 응답 플롯 — 예측된 모델 응답을 플로팅합니다. 기본적으로 응답 플롯이 표시됩니다.

    • 예측 오차 플롯 — 모델 응답과 예측 데이터 간의 오차를 플로팅합니다.

    • 속성 — 속성 편집기 대화 상자를 열어 플롯 특성을 사용자 지정합니다.

버전 내역

R2006a 이전에 개발됨