Main Content

Simulink 재귀적 추정기 블록을 사용하여 시스템 파라미터 추정하기

이 예제에서는 2개 파라미터 시스템의 파라미터를 추정하고 측정된 출력과 추정된 출력을 비교하는 방법을 보여줍니다.

이 예제는 recursiveLS에서 제공되는 명령줄 파라미터 추정 예제의 Simulink 버전입니다.

시스템은 2개의 파라미터를 가지며, 다음과 같이 표현됩니다.

$y(t) = a_1u(t) + a_2u(t-1)$

여기서 각각은 다음을 나타냅니다.

  • $u$$y$는 각각 실시간 입력 데이터와 출력 데이터입니다.

  • $u(t)$$u(t-1)$은 시스템의 회귀 변수 $H$입니다.

  • $a_1$$a_2$는 시스템의 파라미터 $\theta$입니다.

데이터를 불러오고 입력, 출력 및 시간 정보를 추출합니다.

이 예제를 명령줄 recursiveLS 예제와 직접 비교하기 위해 한 위치씩 시간 벡터를 이동합니다. 이렇게 이동하면 Simulink 입력(시간은 0에서 시작)이 명령줄 입력(시간은 첫 번째 샘플 시간에서 시작)과 동기화됩니다.

load iddata3
input = z3.u;
output = z3.y;
time = z3.SamplingInstants-1;

Simulink에서 사용할 입력 신호와 출력 신호를 생성합니다.

input_sig = timeseries(input,time);
output_sig = timeseries(output,time);

Recursive Least Squares Estimator 블록을 기반으로 미리 구성된 Simulink 모델을 엽니다. 이 모델은 다음과 같습니다.

  • input_sigoutput_sig 블록은 input_sigoutput_sig를 가져옵니다.

  • 모델은 지연선 블록을 거쳐 input_sig를 라우팅한 다음, 지연된 신호를 원래 신호와 함께 다중화하여 Regressors 신호를 생성합니다.

  • Error 포트는 추정된 오차 신호를 제공합니다. Sum 블록은 input_sig에서 이 오차를 빼서 추정된 출력을 생성합니다.

  • 그런 다음, Mux 블록이 측정된 출력 신호(output_sig)와 추정된 출력 신호를 스코프에서 함께 볼 수 있도록 결합합니다.

rls = 'ex_RLS_Estimator_Block_sb_inf';
open_system(rls)

시뮬레이션을 실행합니다. Parameter Scope는 추정 진행 상황을 보여줍니다. 인접한 Parameter Display에는 최종 숫자 값이 표시됩니다. Outputs Scope에는 측정된 출력과 추정된 출력이 함께 플로팅됩니다.

sim(rls)
open_system([rls '/Parameter Scope'])
open_system([rls '/Outputs Scope'])

모델 파라미터를 수정하여 다른 블록 구성을 탐색할 수 있습니다. 예를 들면 다음과 같습니다.

  • 선택한 알고리즘이 결과에 어떤 영향을 주는지 알아보려면 추정 방법을 변경합니다.

  • 슬라이딩 윈도우 알고리즘을 적용하려면 내역finite로 변경하고 윈도우 길이30으로 변경합니다.

참고 항목

| |

관련 항목