주요 콘텐츠

initial

상태공간 모델의 초기 상태에 대한 시스템 응답

    설명

    상태공간 모델 및 희소 상태공간 모델의 경우 initial은 초기 상태 xinit에 대한 비강제 시스템 응답 y를 계산합니다.

    • 연속시간:

      x˙=dx0+A(xx0),x(t0)=xinity=y0+C(xx0)

    • 이산시간:

      x[k+1]=dx0+A(x[k]x0)x[k0]=xinity=y0+C(x[k]x0)

    이는 u(t)가 오프셋 값 u0에서 유지될 때의 시스템 응답입니다.

    선형 시변 또는 선형 파라미터 가변 상태공간 모델의 경우 initial은 초기 상태 xinit, 초기 파라미터 pinit(LPV 모델), 그리고 오프셋 값(u(t) = u0(t) 또는 u(t) = u0(t,p))으로 유지되는 입력을 사용하여 응답을 계산하며, 이는 국소 선형 동특성의 초기 조건 응답에 해당합니다.

    [y,tOut] = initial(sys,IC)는 초기 조건 IC에서 동적 시스템 sys의 비강제 초기 응답 y를 계산합니다. 시간 벡터 tOutsys의 시간 단위로 표시됩니다. initial은 시스템 동특성을 기반으로 시뮬레이션의 시간 스텝과 지속 시간을 자동으로 판단합니다.

    [y,tOut] = initial(sys,IC,t)t로 지정된 시간 스텝에 대한 응답을 시뮬레이션합니다. 시간 스텝을 정의하려면 다음을 지정하십시오.

    • 스칼라 값을 사용하여 최종 시뮬레이션 시간 지정.

    • 요소를 2개 가진 벡터를 사용하여 초기 및 최종 시뮬레이션 시간 지정. (R2023b 이후)

    • 벡터를 사용하여 모든 시간 스텝 지정.

    예제

    [y,tOut] = initial(sys,IC,t,p)는 LPV 모델에 대한 파라미터 궤적 p를 지정합니다. (R2023a 이후)

    예제

    [y,tOut,x] = initial(___)은 상태 궤적 x를 반환합니다.

    예제

    [y,tOut,x,pOut] = initial(sys,IC,t,p)sys가 LPV 모델인 경우 파라미터 궤적 pOut을 반환합니다. (R2023a 이후)

    initial(___)은 위에 열거된 모든 입력 인수의 조합에 디폴트 플로팅 옵션을 사용하여 sys의 초기 상태 응답을 플로팅합니다. 추가 플롯 사용자 지정 옵션이 필요하면 initialplot을 사용하십시오.

    • 여러 동적 시스템의 응답을 동일한 플롯에 플로팅하려면 sys를 쉼표로 구분된 모델 목록으로 지정할 수 있습니다. 예를 들어, initial(sys1,sys2,sys3)은 세 모델의 응답을 동일한 플롯에 플로팅합니다.

    • 플롯에 있는 각 시스템의 색, 선 스타일 및 마커를 지정하려면 각 시스템의 LineSpec 값을 지정합니다. 예를 들어, initial(sys1,LineSpec1,sys2,LineSpec2)는 두 모델을 플로팅하고 각각의 플롯 스타일을 지정합니다. LineSpec 값 지정에 대한 자세한 내용은 initialplot 항목을 참조하십시오.

    예제

    모두 축소

    이 예제에서는 5개의 상태를 갖는 무작위 상태공간 모델을 생성하고 초기 상태에 대한 시스템의 응답 플롯을 만듭니다.

    rng("default")
    sys = rss(5);
    x0 = [1,2,3,4,5];
    initial(sys,x0)

    MATLAB figure

    다음 상태공간 모델의 응답을 플로팅합니다.

    [x˙1x˙2]=[-0.5572-0.78140.78140][x1x2]y=[1.96916.4493][x1x2].

    다음 초기 조건을 사용합니다.

    x(0)=[10].

    a = [-0.5572, -0.7814; 0.7814, 0];
    c = [1.9691  6.4493];
    x0 = [1 ; 0];
    
    sys = ss(a,[],c,[]);
    initial(sys,x0)

    MATLAB figure

    다음과 같은 2-입력 2-출력 동적 시스템이 있다고 가정하겠습니다.

    sys(s)=[03ss2+s+10s+1s+52s+6].MIMO system

    초기 조건 응답 플롯이 상태공간 모델에만 지원되므로, sys를 상태공간 형식으로 변환합니다.

    sys = ss([0, tf([3 0],[1 1 10]) ; tf([1 1],[1 5]), tf(2,[1 6])]);
    size(sys)
    State-space model with 2 outputs, 2 inputs, and 4 states.
    

    결과로 얻은 상태공간 모델에는 4개의 상태가 있습니다. 따라서 요소를 4개 가진 초기 조건 벡터를 제공합니다.

    x0 = [0.3,0.25,1,4];

    초기 조건 응답 플롯을 만듭니다.

    initial(sys,x0);

    MATLAB figure

    결과로 얻은 플롯에 sys의 출력당 하나씩 총 두 개의 서브플롯이 포함되어 있습니다.

    이 예제에서는 다음 영점-극점-이득 모델의 초기 조건 응답을 검토하고 플롯을 tFinal = 15초로 제한합니다.

    먼저, initial은 상태공간 모델만 지원하므로 zpk 모델을 ss 모델로 변환합니다.

    sys = ss(zpk(-1,[-0.2+3j,-0.2-3j],1)*tf([1 1],[1 0.05]));
    tFinal = 15;
    x0 = [4,2,3];

    이제 초기 조건 응답 플롯을 만듭니다.

    initial(sys,x0,tFinal);

    MATLAB figure

    이 예제에서는 3개 동적 시스템의 초기 조건 응답을 플로팅합니다.

    먼저 3개 모델을 만들고 초기 조건을 제공합니다. 모든 모델의 상태 개수는 동일해야 합니다.

    rng('default');
    sys1 = rss(4); 
    sys2 = rss(4);
    sys3 = rss(4);
    x0 = [1,1,1,1];

    5초 범위의 시간 벡터 t를 사용하여 3개 모델의 초기 조건 응답을 플로팅합니다.

    t = 0:0.1:5;
    initial(sys1,'r--',sys2,'b',sys3,'g-.',x0,t)

    MATLAB figure

    2개의 상태를 갖는 다음 상태공간 모델의 초기 조건 응답 데이터를 추출합니다.

    [x˙1x˙2]=[-0.5572-0.78140.78140][x1x2]y=[1.96916.4493][x1x2].

    다음 초기 조건을 사용합니다.

    x(0)=[10].

    a = [-0.5572, -0.7814; 0.7814, 0];
    c = [1.9691  6.4493];
    x0 = [1 ; 0];
    sys = ss(a,[],c,[]);
    [y,tOut,x] = initial(sys,x0);

    배열 y는 행 수와 열 수가 각각 시간 샘플(tOut의 길이) 개수 및 출력 개수와 같습니다. 이와 유사하게, x는 행 수와 열 수가 각각 시간 샘플(tOut의 길이) 개수 및 상태 개수와 같습니다.

    이 예제에서는 상태 6개, 출력 3개, 입력 2개인 상태공간 모델의 초기 조건 응답 데이터를 추출하겠습니다.

    먼저, 모델을 만들고 초기 조건을 제공합니다.

    rng('default');
    sys = rss(6,3,2); 
    x0 = [0.1,0.3,0.05,0.4,0.75,1];

    15초 범위의 시간 벡터 t를 사용하여 모델의 초기 조건 응답을 추출합니다.

    t = 0:0.1:15;
    [y,tOut,x] = initial(sys,x0,t);

    배열 y는 행 수와 열 수가 각각 시간 샘플(tOut의 길이) 개수 및 출력 개수와 같습니다. 이와 유사하게, x는 행 수와 열 수가 각각 시간 샘플(tOut의 길이) 개수 및 상태 개수와 같습니다.

    이 예제에서 throttleLPV.m은 15도 ~ 90도의 열림 범위에서 선형으로 동작하는 비선형 엔진 스로틀의 동특성을 정의합니다.

    lpvss를 사용하여 모델을 만듭니다. 이 모델은 모델의 첫 번째 상태인 스로틀 각도로 파라미터화됩니다.

    c0 = 50;
    k0 = 120;
    K0 = 1e4;
    b0 = 4e4;
    yf = 15*K0/(k0+K0);
    Ts = 0;
    sys = lpvss("x1",@(t,p) throttleLPV(p,c0,k0,b0,K0),Ts,0,15);

    궤적 p(t)를 따라 이 모델의 초기 응답을 계산할 수 있습니다.

    선형 범위의 하한에서 작은 각속도로 시작할 경우의 응답을 계산합니다. 파라미터 궤적을 지정하고, findop를 사용하여 초기 조건을 구합니다.

    pFcn = @(t,x,u)x(1);
    xinit = [15;10]; 
    pinit = xinit(1);
    t = linspace(0,0.6,500);
    ic = findop(sys,t(1),pinit,x=xinit);
    y = initial(sys,ic,t,pFcn);
    plot(t,y)

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

    선형 범위의 하한에서 이 범위의 상한에 도달할 만큼 충분한 각속도로 시작할 경우의 응답을 계산합니다.

    xinit2 = [15;5e3]; 
    pinit2 = xinit2(1);
    t2 = linspace(0,1,1000);
    ic2 = findop(sys,t2(1),pinit2,x=xinit2);
    y2 = initial(sys,ic2,t2,pFcn);
    plot(t2,y2)

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

    데이터 함수를 봅니다.

    type throttleLPV.m
    function [A,B,C,D,E,dx0,x0,u0,y0,Delays] = throttleLPV(x1,c,k,b,K)
    % LPV representation of engine throttle dynamics.
    % Ref: https://www.mathworks.com/help/sldo/ug/estimate-model-parameter-values-gui.html
    % x1: scheduling parameter (throttle angle; first state of the model)
    % c,k,b,K: physical parameters
    
    A = [0 1; -k -c];
    B = [0; b];
    C = [1 0];
    D = 0;
    E = [];
    Delays = [];
    x0 = [];
    u0 = [];
    y0 = [];
    
    % Nonlinear displacement value
    NLx = max(90,x1(1))-90+min(x1(1),15)-15;
    % Capture the nonlinear contribution as a state-derivative offset
    dx0 = [0;-K*NLx]; 
    

    복소 계수를 갖는 상태공간 모델을 만듭니다.

    A = [-2-2i -2;1 0];
    B = [2;0];
    C = [0 0.5+2.5i];
    D = 0;
    sys = ss(A,B,C,D);

    임의의 시작 상태에 대한 시스템의 초기 조건 응답을 계산합니다.

    ic = [1 2];
    [y,t] = initial(sys,ic);

    결과로 얻은 응답 데이터에 복소수 출력값이 포함되어 있습니다.

    y
    y = 334×1 complex
    
       1.0000 + 5.0000i
       1.0301 + 5.1157i
       1.0607 + 5.1854i
       1.0868 + 5.2140i
       1.1047 + 5.2062i
       1.1116 + 5.1670i
       1.1056 + 5.1012i
       1.0854 + 5.0135i
       1.0506 + 4.9082i
       1.0014 + 4.7894i
       0.9383 + 4.6608i
       0.8623 + 4.5255i
       0.7747 + 4.3864i
       0.6769 + 4.2458i
       0.5706 + 4.1057i
          ⋮
    
    

    입력 인수

    모두 축소

    동적 시스템으로, SISO 또는 MIMO 동적 시스템 모델로 지정되거나 동적 시스템 모델로 구성된 배열로 지정됩니다. 다음 유형의 상태공간 모델만 사용할 수 있습니다.

    • 연속시간 또는 이산시간 수치 ss 모델.

    • 일반화된 LTI 모델 또는 불확실 LTI 모델(예: genss 또는 uss 모델). (불확실 모델을 사용하려면 Robust Control Toolbox™가 필요합니다.)

      • 조정 가능한 제어 설계 블록의 경우, 이 함수는 응답 데이터를 플로팅할 때 및 반환할 때 모두 현재 값에서 모델을 실행합니다.

      • 불확실한 제어 설계 블록의 경우, 이 함수는 모델의 공칭 값과 임의 샘플을 플로팅합니다. 출력 인수를 사용할 경우, 이 함수는 공칭 모델에 대해서만 응답 데이터를 반환합니다.

    • 희소 상태공간 모델(예: sparssmechss 모델). 희소 상태공간 모델에 대해 최종 시간 tFinal을 지정해야 합니다.

    • 선형 시변(ltvss) 모델 및 선형 파라미터 가변(lpvss) 모델.

    sys가 모델로 구성된 배열인 경우, 이 함수는 배열에 있는 모든 모델의 응답을 동일한 축에 플로팅합니다.

    응답을 계산할 시간 스텝으로, 다음 값 중 하나로 지정됩니다.

    • 양의 스칼라 tFinalt = 0부터 t = tFinal까지의 응답을 계산합니다.

    • 요소를 2개 가진 벡터 [t0 tFinal]t = t0부터 t = tFinal까지의 응답을 계산합니다. (R2023b 이후)

    • 벡터 Ti:dt:Tft에 지정된 시점에 대한 응답을 계산합니다.

      • 연속시간 시스템의 경우 dt는 연속 시스템에 대한 이산 근사의 샘플 시간입니다.

      • 지정된 샘플 시간을 갖는 이산시간 시스템의 경우 dtsys의 샘플 시간 속성 Ts와 일치해야 합니다.

      • 샘플 시간이 지정되지 않은(Ts = -1) 이산시간 시스템의 경우 dt1이어야 합니다.

    • [] — 시스템 동특성을 기준으로 시간 값을 자동으로 선택합니다.

    다음은 tFinal 또는 [t0 tFinal]을 사용하여 시간 범위를 지정하는 경우입니다.

    • 연속시간 시스템의 경우, 이 함수는 시스템 동특성을 기준으로 스텝 크기와 점 개수를 자동으로 판단합니다.

    • 지정된 샘플 시간을 갖는 이산시간 시스템의 경우, 이 함수는 sys의 샘플 시간을 스텝 크기로 사용합니다.

    • 샘플 시간이 지정되지 않은 이산시간 시스템의 경우(Ts = -1), 이 함수는 tFinal을 1초의 샘플 시간으로 시뮬레이션할 샘플링 주기의 개수로 해석합니다.

    sysTimeUnit 속성에 지정된 시간 단위를 사용하여 t를 표현합니다.

    초기 조건으로, 다음 중 하나로 지정됩니다.

    • 초기 상태 값으로, 상태 개수와 동일한 길이의 벡터 xinit로 지정됩니다.

    • 응답 구성으로, RespConfig 객체로 지정됩니다. 이 객체를 사용하여 LPV 모델의 초기 상태와 파라미터 값을 지정할 수 있습니다. (R2024b 이후)

    • 동작 조건으로, findop를 사용하여 생성된 객체로 지정됩니다. (R2024b 이후)

    R2023a 이후

    LPV 모델의 파라미터 궤적으로, 행렬 또는 함수 핸들로 지정됩니다.

    • 외생적 궤적 또는 명시적 궤적의 경우, pN×Np 차원의 행렬로 지정합니다. 여기서 N은 시간 샘플 개수이고 Np는 파라미터 개수입니다.

      따라서 행 벡터 p(i,:)i번째 시간 스텝에서의 파라미터 값을 포함합니다.

    • 내생적 궤적 또는 묵시적 궤적의 경우, p를 연속시간에서는 p = F(t,x,u) 형식의 함수 핸들로 지정하고, 이산시간에서는 p = F(k,x,u) 형식의 함수 핸들로 지정합니다. 이때 파라미터를 시간 t 또는 시간 샘플 k, 상태 x, 입력 u의 함수로 제공합니다. 이 입력 방법에는 초기 파라미터 값이 필요합니다. 초기 조건을 지정하려면 IC 인수를 사용하십시오.

    출력 인수

    모두 축소

    응답 데이터로, 배열로 반환됩니다.

    • SISO 시스템의 경우, yt(제공한 경우) 또는 tOut(t를 제공하지 않은 경우)과 동일한 길이의 열 벡터입니다.

    • 단일 입력, 다중 출력 시스템의 경우, y는 시간 샘플 개수만큼의 행과 출력 개수만큼의 열을 갖는 행렬입니다. 따라서 yj번째 열(y(:,j))은 입력에서 j번째 출력으로의 응답을 포함합니다.

    • MIMO 시스템의 경우 y의 차원은 N×Ny입니다. 여기서 각각은 다음과 같습니다.

      • N은 시간 샘플 개수입니다.

      • Ny는 시스템 출력 개수입니다.

    • 복소 계수를 갖는 시스템의 경우, y는 복소수 값으로 구성된 배열입니다. (R2025a 이후)

    응답이 계산되는 시간으로, 벡터로 반환됩니다. 시간으로 구성된 벡터 t를 따로 제공하지 않으면 initial은 시스템 동특성을 기반으로 시간 벡터를 선택합니다. 시간은 sys의 시간 단위로 표현됩니다.

    상태 궤적으로, 배열로 반환됩니다. xt 또는 tOut의 각 시간에서 sys 상태의 변화를 포함합니다. x의 차원은 N×Nx입니다. 여기서 각각은 다음과 같습니다.

    • N은 시간 샘플 개수입니다.

    • Nx는 상태 개수입니다.

    복소 계수를 갖는 시스템의 경우, x는 복소수 값으로 구성된 배열입니다. (R2025a 이후)

    R2023a 이후

    파라미터 궤적으로, 배열로 반환됩니다. sys가 선형 파라미터 가변(lpvss) 모델인 경우 pOutsys의 파라미터 변화를 포함합니다. pOut의 차원은 N×Np입니다. 여기서 각각은 다음과 같습니다.

    • N은 시간 샘플 개수입니다.

    • Np는 파라미터 개수입니다.

    • 플롯 사용자 지정 옵션이 추가로 필요하면 대신 initialplot을 사용하십시오.

    • initial을 사용하여 생성된 플롯은 string형 배열이나 문자형 벡터로 구성된 셀형 배열을 사용해서 여러 줄로 된 제목이나 레이블을 지정하는 것을 지원하지 않습니다. 여러 줄로 된 제목과 레이블을 지정하려면 newline 문자가 포함된 단일 문자열을 사용하십시오.

      initial(sys)
      title("first line" + newline + "second line");

    버전 내역

    R2006a 이전에 개발됨

    모두 확장