Main Content

stepinfo

상승 시간, 정착 시간 및 기타 계단 응답 특성

설명

stepinfo를 사용하면 동적 시스템 모델 또는 계단 응답 데이터로 구성된 배열에 대한 계단 응답 특성을 계산할 수 있습니다. 계단 응답 y(t)의 경우, stepinfo는 yinit와 yfinal에 상대적인 특성을 계산합니다. 여기서 yinit는 초기 오프셋, 즉 계단 입력이 적용되기 전의 값이고 yfinal은 응답의 정상 상태 값입니다. 이들 값은 사용하는 구문에 따라 다릅니다.

  • 동적 시스템 모델 sys의 경우 stepinfo는 yinit = 0을 사용하고 yfinal의 값으로는 정상 상태 값을 사용합니다.

  • 계단 응답 데이터 [y,t]의 배열인 경우 값을 명시적으로 지정하지 않는 한 stepinfo는 yinit = 0을 사용하고 yfinal의 값으로는 y의 마지막 샘플 값을 사용합니다.

stepinfo가 계단 응답 특성을 계산하는 방법에 대한 자세한 내용은 알고리즘 항목을 참조하십시오.

다음 그림은 stepinfo가 계단 응답에 대해 계산하는 특성 중 일부를 보여줍니다. 이 응답의 경우 t < 0일 때 y(t) = 0이라고 가정하며, 따라서 yinit = 0입니다.

Step response characteristics. The figure shows peak response, peak time, rise time, settling time, and transient time of the response.

예제

S = stepinfo(sys)는 동적 시스템 모델 sys에 대한 계단 응답 특성을 계산합니다. 이 구문은 yinit = 0을 사용하고 yfinal의 값으로는 정상 상태 값을 사용하여 이들 값에 의존하는 특성을 계산합니다.

S = stepinfo(y,t)는 계단 응답 데이터로 구성된 배열 y와 그에 대응되는 시간 벡터 t로부터 계단 응답 특성을 계산합니다. SISO 시스템 응답의 경우 yt와 요소의 개수가 같은 벡터입니다. MIMO 응답 데이터의 경우 y는 각 I/O 채널의 응답을 포함하는 배열입니다. 이 구문은 yinit = 0을 사용하고 y의 마지막 값(또는 각 채널의 대응되는 응답 데이터의 마지막 값)을 yfinal로 사용합니다.

예제

S = stepinfo(y,t,yfinal)은 정상 상태 값 yfinal에 상대적인 계단 응답 특성을 계산합니다. 이 구문은 측정 잡음과 같은 이유로 예상 정상 상태 시스템 응답이 y의 마지막 값과 다르다는 사실을 알고 있을 때 유용합니다. 이 구문은 yinit = 0을 사용합니다.

SISO 응답의 경우 ty는 길이가 NS인, 동일한 길이의 벡터입니다. 입력이 NU개이고 출력이 NY개인 시스템의 경우 yNS×NY×NU 배열(step 참조)로 지정하고 yfinalNY×NU 배열로 지정할 수 있습니다. 그러면 stepinfo는 각 I/O 쌍에 대응하는 응답 특성으로 구성된 NY×NU 구조체형 배열 S를 반환합니다.

예제

S = stepinfo(y,t,yfinal,yinit)는 응답 초기값 yinit에 상대적인 계단 응답 특성을 계산합니다. 이 구문은 y 데이터가 초기 오프셋을 갖는 경우, 즉 계단 입력이 발생하기 전에 y가 0이 아닐 때 유용합니다.

SISO 응답의 경우 ty는 길이가 NS인, 동일한 길이의 벡터입니다. 입력이 NU개이고 출력이 NY개인 시스템의 경우 yNS×NY×NU 배열로 지정하고 yinitNY×NU 배열로 지정할 수 있습니다. 그러면 stepinfo는 각 I/O 쌍에 대응하는 응답 특성으로 구성된 NY×NU 구조체형 배열 S를 반환합니다.

예제

S = stepinfo(___,'SettlingTimeThreshold',ST)를 사용하면 정착 시간과 과도 시간을 정의하는 데 사용되는 임계값 ST를 지정할 수 있습니다. 디폴트 값은 ST = 0.02(2%)입니다. 이 구문은 위에 열거된 구문에 나와 있는 입력 인수를 원하는 대로 조합하여 사용할 수 있습니다.

예제

S = stepinfo(___,'RiseTimeLimits',RT)를 사용하면 상승 시간을 정의하는 데 사용되는 하한 임계값과 상한 임계값을 지정할 수 있습니다. 기본적으로 상승 시간은 응답이 초기값에서 정상 상태 값으로 10%에서 90%까지 상승하는 데 걸리는 시간(RT = [0.1 0.9])입니다. 상한 임계값 RT(2)SettlingMinSettlingMax를 계산하는 데도 사용됩니다. 이들 값은 응답이 상한 임계값에 도달한 후에 발생하는 응답의 최솟값과 최댓값입니다. 이 구문은 위에 열거된 구문에 나와 있는 입력 인수를 원하는 대로 조합하여 사용할 수 있습니다.

예제

모두 축소

상승 시간, 정착 시간, 오버슈트와 같은 동적 시스템 모델의 계단 응답 특성을 계산합니다. 이 예제에서는 다음과 같은 연속시간 전달 함수를 사용합니다.

sys=s2+5s+5s4+1.65s3+5s2+6.5s+2

전달 함수를 만들고 계단 응답을 살펴봅니다.

sys = tf([1 5 5],[1 1.65 5 6.5 2]);
step(sys)

Figure contains an axes object. The axes object contains an object of type line. This object represents sys.

이 플롯을 보면 응답이 몇 초 만에 상승한 다음 진동하는데 점점 약 2.5의 정상 상태 값으로 수렴하는 것을 알 수 있습니다. stepinfo를 사용하여 이 응답의 특성을 계산합니다.

S = stepinfo(sys)
S = struct with fields:
         RiseTime: 3.8456
    TransientTime: 27.9762
     SettlingTime: 27.9762
      SettlingMin: 2.0689
      SettlingMax: 2.6873
        Overshoot: 7.4915
       Undershoot: 0
             Peak: 2.6873
         PeakTime: 8.0530

여기서 이 함수는 yinit= 0을 사용하여 동적 시스템 모델 sys의 특성을 계산합니다.

기본적으로 정착 시간은 오차가 |yinit-yfinal|의 2% 아래로 유지되는 데 걸리는 시간입니다. 결과 S.SettlingTimesys의 경우 이 조건이 약 28초 후에 발생함을 보여줍니다. 상승 시간의 디폴트 정의는 응답이 yinit= 0에서 yfinal로 10%에서 90%까지 상승하는 데 걸리는 시간입니다. sys의 경우 S.RiseTime을 보면 이렇게 상승하는 데 4초가 채 걸리지 않음을 알 수 있습니다. 최대 오버슈트는 S.Overshoot에 반환됩니다. 이 시스템의 경우 시간 S.PeakTime에 발생하는 피크 값 S.Peak는 정상 상태 값의 약 7.5%만큼 오버슈트합니다.

MIMO 시스템의 경우 stepinfo는 구조체형 배열을 반환하는데, 각 요소는 시스템 내 대응하는 I/O 채널의 응답 특성을 포함합니다. 이 예제에서는 2-출력 2-입력 이산시간 시스템을 사용합니다. 계단 응답 특성을 계산합니다.

A = [0.68 -0.34; 0.34 0.68];
B = [0.18 -0.05; 0.04 0.11];
C = [0 -1.53; -1.12 -1.10];
D = [0 0; 0.06 -0.37];
sys = ss(A,B,C,D,0.2);

S = stepinfo(sys)
S=2×2 struct array with fields:
    RiseTime
    TransientTime
    SettlingTime
    SettlingMin
    SettlingMax
    Overshoot
    Undershoot
    Peak
    PeakTime

S의 요소를 참조하여 특정 I/O 채널의 응답 특성에 액세스합니다. 예를 들어, sys의 첫 번째 입력에서 두 번째 출력으로의 응답에 대한 응답 특성, 즉 S(2,1)을 살펴보겠습니다.

S(2,1)
ans = struct with fields:
         RiseTime: 0.4000
    TransientTime: 2.8000
     SettlingTime: 3
      SettlingMin: -0.6724
      SettlingMax: -0.5188
        Overshoot: 24.6476
       Undershoot: 11.1224
             Peak: 0.6724
         PeakTime: 1

특정 값에 액세스하려면 점 표기법을 사용하십시오. 예를 들어, (2,1) 채널의 상승 시간을 추출해 보겠습니다.

rt21 = S(2,1).RiseTime
rt21 = 0.4000

알고리즘 섹션에 설명된 대로 SettlingTimeThresholdRiseTimeThreshold를 사용하여 각각 정착 시간과 상승 시간에 대한 디폴트 백분율을 변경할 수 있습니다. 이 예제에서는 다음 시스템을 사용합니다.

sys=s2+5s+5s4+1.65s3+6.5s+2

전달 함수를 만듭니다.

sys = tf([1 5 5],[1 1.65 5 6.5 2]);

sys의 응답의 오차가 간격 |yfinal-yinit|의 0.5% 아래로 유지되는 데 걸리는 시간을 계산합니다. 이를 위해 SettlingTimeThreshold를 0.5%, 즉 0.005로 설정합니다.

S1 = stepinfo(sys,'SettlingTimeThreshold',0.005);
st1 = S1.SettlingTime
st1 = 46.1325

sys의 응답이 yinit에서 yfinal로 5%에서 95%까지 상승하는 데 걸리는 시간을 계산합니다. 이를 위해 RiseTimeThreshold를 이들 범위를 포함하는 벡터로 설정합니다.

S2 = stepinfo(sys,'RiseTimeThreshold',[0.05 0.95]);
rt2 = S2.RiseTime
rt2 = 4.1690

동일한 계산에서 정착 시간과 상승 시간에 대한 백분율을 모두 정의할 수 있습니다.

S3 = stepinfo(sys,'SettlingTimeThreshold',0.005,'RiseTimeThreshold',[0.05 0.95])
S3 = struct with fields:
         RiseTime: 4.1690
    TransientTime: 46.1325
     SettlingTime: 46.1325
      SettlingMin: 2.0689
      SettlingMax: 2.6873
        Overshoot: 7.4915
       Undershoot: 0
             Peak: 2.6873
         PeakTime: 8.0530

시스템의 모델이 없어도 계단 응답 데이터에서 계단 응답 특성을 추출할 수 있습니다. 예를 들어, 계단 입력에 대한 시스템의 응답을 측정하여 얻은 응답 데이터를 벡터 t에 저장된 시간에서의 응답 값으로 구성되는 벡터 y에 저장했다고 가정하겠습니다. 응답 데이터를 불러와서 살펴보겠습니다.

load StepInfoData t y
plot(t,y)

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

stepinfo를 사용하여 이 응답 데이터에서 계단 응답 특성을 계산합니다. 정상 상태 응답 값 yfinal을 지정하지 않으면 stepinfo는 응답 벡터 y의 마지막 값이 정상 상태 응답이라고 가정합니다. 데이터에 얼마간의 잡음이 있으므로 y의 마지막 값은 실제 정상 상태 응답 값이 아닐 가능성이 큽니다. 정상 상태 값이 무엇이어야 하는지 알고 있다면 이 값을 stepinfo에 입력할 수 있습니다. 이 예제에서는 정상 상태 응답이 2.4라고 가정하겠습니다.

S1 = stepinfo(y,t,2.4)
S1 = struct with fields:
         RiseTime: 1.2897
    TransientTime: 19.6478
     SettlingTime: 19.6439
      SettlingMin: 2.0219
      SettlingMax: 3.3302
        Overshoot: 38.7575
       Undershoot: 0
             Peak: 3.3302
         PeakTime: 3.4000

데이터에 있는 잡음 때문에 정착 시간의 디폴트 정의가 너무 엄격해서 거의 20초나 되는 임의의 값이 생성되었습니다. 잡음을 고려하여 정착 시간 임계값을 디폴트 값인 2%에서 5%로 늘리십시오.

S2 = stepinfo(y,t,2.4,'SettlingTimeThreshold',0.05)
S2 = struct with fields:
         RiseTime: 1.2897
    TransientTime: 10.4201
     SettlingTime: 10.4149
      SettlingMin: 2.0219
      SettlingMax: 3.3302
        Overshoot: 38.7575
       Undershoot: 0
             Peak: 3.3302
         PeakTime: 3.4000

피크 오차 emax가 간격 |yfinal-yinit|와 동일한 경우 정착 시간과 과도 시간이 같은데(알고리즘 참조), 이는 언더슈트 또는 피드스루가 없고 오버슈트가 100% 미만인 모델의 경우 발생합니다. 피드스루가 있거나, 영점이 원점에 있거나, 영점이 불안정(언더슈트)하거나, 오버슈트가 큰 모델에서는 달라지는 경향이 있습니다.

다음과 같은 모델이 있다고 가정하겠습니다.

s = tf('s');
sys1 = 1+tf(1,[1 1]);                        % feedthrough
sys2 = tf([1 0],[1 1]);                      % zero at the origin
sys3 = tf([-3 1],[1 2 1]);                   % non-minimum phase with undershoot
sys4 = (s/0.5 + 1)/(s^2 + 0.2*s + 1);        % large overshoot

step(sys1,sys2,sys3,sys4)
grid on
legend('Feedthrough','Zero at origin','Non-minimum phase with undershoot','Large overshoot')

Figure contains an axes object. The axes object contains 4 objects of type line. These objects represent Feedthrough, Zero at origin, Non-minimum phase with undershoot, Large overshoot.

계단 응답 특성을 계산합니다.

S1 = stepinfo(sys1)
S1 = struct with fields:
         RiseTime: 1.6095
    TransientTime: 3.9121
     SettlingTime: 3.2190
      SettlingMin: 1.8005
      SettlingMax: 2.0000
        Overshoot: 0
       Undershoot: 0
             Peak: 2.0000
         PeakTime: 10.5458

S2 = stepinfo(sys2)
S2 = struct with fields:
         RiseTime: 0
    TransientTime: 3.9121
     SettlingTime: NaN
      SettlingMin: 2.6303e-05
      SettlingMax: 1
        Overshoot: Inf
       Undershoot: 0
             Peak: 1
         PeakTime: 0

S3 = stepinfo(sys3)
S3 = struct with fields:
         RiseTime: 2.9198
    TransientTime: 6.5839
     SettlingTime: 7.3229
      SettlingMin: 0.9004
      SettlingMax: 0.9991
        Overshoot: 0
       Undershoot: 88.9466
             Peak: 0.9991
         PeakTime: 10.7900

S4 = stepinfo(sys4)
S4 = struct with fields:
         RiseTime: 0.3896
    TransientTime: 40.3317
     SettlingTime: 46.5052
      SettlingMin: -0.2796
      SettlingMax: 2.7571
        Overshoot: 175.7137
       Undershoot: 27.9629
             Peak: 2.7571
         PeakTime: 1.8850

플롯과 특성을 검토합니다. 이들 모델의 경우 피크 오차가 초기값과 최종 값 사이의 간격을 초과하기 때문에 정착 시간과 과도 시간이 서로 다릅니다. sys2와 같은 모델의 경우, 정상 상태 값이 0이기 때문에 정착 시간은 NaN으로 반환됩니다.

이 예제에서는 초기 오프셋이 있는 계단 응답 데이터에서 계단 응답 특성을 계산합니다. 이것은 계단 입력이 발생하기 전의 응답 데이터 값이 0이 아님을 의미합니다.

계단 응답 데이터를 불러와서 플롯을 검토합니다.

load stepDataOffset.mat
plot(stepOffset.Time,stepOffset.Data)

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

yfinalyinit를 지정하지 않는 경우 stepinfoyfinal이 응답 벡터 y의 마지막 값이고 yinit가 0이라고 가정합니다. 정상 상태 값과 초기값을 알면 stepinfo에 이들 값을 제공할 수 있습니다. 여기서 응답 yfinal의 정상 상태는 0.9이고 초기 오프셋 yinit는 0.2입니다.

이 응답 데이터에서 계단 응답 특성을 계산합니다.

S = stepinfo(stepOffset.Data,stepOffset.Time,0.9,0.2)
S = struct with fields:
         RiseTime: 0.0084
    TransientTime: 1.0662
     SettlingTime: 1.0662
      SettlingMin: 0.8461
      SettlingMax: 1.0878
        Overshoot: 26.8259
       Undershoot: 0.0429
             Peak: 0.8878
         PeakTime: 1.0225

여기서 stepinfoyinit에서 최대 편차를 측정하기 때문에 이 응답의 피크 값은 0.8878입니다.

입력 인수

모두 축소

동적 시스템으로, SISO 또는 MIMO 동적 시스템 모델로 지정됩니다. 사용 가능한 동적 시스템에는 다음이 포함됩니다.

  • 연속시간 또는 이산시간 수치적 LTI 모델(예: tf, zpk, ss 모델).

  • 일반화된 모델 또는 불확실 LTI 모델(예: genss, uss (Robust Control Toolbox) 모델). (불확실 모델을 사용하려면 Robust Control Toolbox™가 필요합니다.) 일반화된 모델의 경우 stepinfo는 조정 가능한 블록의 현재 값과 불확실한 블록의 공칭 값을 사용하여 계단 응답 특성을 계산합니다.

  • 식별된 LTI 모델(예: idtf (System Identification Toolbox), idss (System Identification Toolbox), idproc (System Identification Toolbox) 모델). (식별된 모델을 사용하려면 System Identification Toolbox™가 필요합니다.)

계단 응답 데이터로, 다음 중 하나로 지정됩니다.

  • SISO 응답 데이터의 경우 길이가 Ns인 벡터. 여기서 Ns는 응답 데이터의 샘플 개수입니다.

  • MIMO 응답 데이터의 경우 Ns×Ny×Nu 배열. 여기서 Ny는 시스템 출력의 개수이고 Nu는 시스템 입력의 개수입니다.

y의 응답 데이터에 대응되는 시간 벡터로, 길이가 Ns인 벡터로 지정됩니다.

정상 상태 값으로, 스칼라 또는 배열로 지정됩니다.

  • SISO 응답 데이터의 경우 스칼라 값을 지정합니다.

  • MIMO 응답 데이터의 경우 Ny×Nu 배열을 지정합니다. 여기서 각 요소는 대응하는 시스템 채널에 대한 정상 상태 응답 값을 제공합니다.

yfinal을 입력하지 않으면 stepinfoy의 대응하는 채널의 마지막 값을 정상 상태 응답 값으로 사용합니다.

이 인수는 계단 응답 데이터가 입력으로 제공되는 경우에만 지원됩니다. 동적 시스템 모델 sys이 입력으로 제공되는 경우 stepinfo는 yfinal의 값으로는 정상 상태 값을 사용하여 이 값에 의존하는 특성을 계산합니다.

계단 입력이 발생하기 전 y의 값으로, 스칼라 또는 배열로 지정됩니다.

  • SISO 응답 데이터의 경우 스칼라 값을 지정합니다.

  • MIMO 응답 데이터의 경우 Ny×Nu 배열을 지정합니다. 여기서 각 요소는 대응하는 시스템 채널에 대한 응답 초기값을 제공합니다.

yinit를 입력하지 않으면 stepinfo는 응답 초기값으로 0을 사용합니다.

t = 0에서 응답 y(0)은 피드스루가 없는 시스템의 yinit와 동일합니다. 하지만 t = 0에서의 불연속 때문에 피드스루가 있으면 두 양이 달라집니다.

예를 들어 다음 그림은 피드스루 sys = tf([-1 0.2 1],[1 0.7 1])에서 시스템의 계단 응답을 보여줍니다.

Step response of a system with feedthrough equal to negative1

여기서 yinit는 0이고 피드스루 값은 –1입니다.

이 인수는 계단 응답 데이터가 입력으로 제공되는 경우에만 지원됩니다. 동적 시스템 모델 sys가 입력으로 제공되는 경우 stepinfo는 yinit = 0을 사용하여 이 값에 의존하는 특성을 계산합니다.

정착 시간과 과도 시간을 정의하는 데 사용되는 임계값으로, 0과 1 사이의 스칼라 값으로 지정됩니다. 디폴트 정착 시간 및 과도 시간 정의(알고리즘 참조)를 변경하려면 ST를 다른 값으로 설정하십시오. 예를 들어 오차가 5% 아래로 떨어지는 시점을 측정하려면 ST를 0.05로 설정하십시오.

상승 시간을 정의하는 데 사용되는 임계값으로, 0과 1 사이의 내림차순이 아닌 값으로 구성된, 요소를 2개 가진 행 벡터로 지정됩니다. 디폴트 상승 시간 정의(알고리즘 참조)를 변경하려면 RT를 다른 값으로 설정하십시오. 예를 들어, 상승 시간을 응답이 초기값에서 정상 상태 값으로 5%에서 95%까지 상승하는 데 걸리는 시간으로 정의하려면 RT[0.05 0.95]로 설정하십시오.

출력 인수

모두 축소

계단 응답 특성으로, 다음 필드를 포함하는 구조체로 반환됩니다.

  • RiseTime

  • TransientTime

  • SettlingTime

  • SettlingMin

  • SettlingMax

  • Overshoot

  • Undershoot

  • Peak

  • PeakTime

stepinfo가 이러한 특성을 정의하는 방법에 대한 자세한 내용은 알고리즘 항목을 참조하십시오.

MIMO 모델 또는 응답 데이터의 경우 S는 각 요소가 대응하는 I/O 채널의 계단 응답 특성 값을 포함하는 구조체형 배열입니다. 예를 들어, 3-입력 3-출력 모델 또는 응답 데이터로 구성된 배열을 제공할 경우 S(2,3)은 세 번째 입력에서 두 번째 출력으로의 응답의 특성을 포함합니다. 예제는 MIMO 시스템의 계단 응답 특성 항목을 참조하십시오.

sys가 불안정하면 InfPeakPeakTime을 제외하고 모든 계단 응답 특성이 NaN입니다.

알고리즘

계단 응답 y(t)의 경우, stepinfo는 yinit 및 yfinal에 상대적인 특성을 계산합니다. 동적 시스템 모델 sys의 경우 stepinfo는 yinit = 0을 사용하고 yfinal의 값으로는 정상 상태 값을 사용합니다.

이 표는 stepinfo가 각 특성을 계산하는 방법을 보여줍니다.

계단 응답 특성설명
RiseTime응답이 yinit에서 yfinal로 10%에서 90%까지 상승하는 데 걸리는 시간
TransientTime

t ≥ T일 때 오차 |y(t) – yfinal| ≤ SettlingTimeThreshold × emax인 첫 번째 시간 T이며, 여기서 emax는 t ≥ 0일 때 최대 오차 |y(t) – yfinal|입니다.

기본적으로 SettlingTimeThreshold = 0.02(피크 오차의 2%)입니다. 과도 시간은 과도 동특성이 얼마나 빨리 사라지는지 측정합니다.

SettlingTime

t ≥ T일 때 오차 |y(t) – yfinal| ≤ SettlingTimeThreshold × |yfinal – yinit|인 첫 번째 시간 T입니다.

기본적으로 SettlingTime은 오차가 |yfinal – yinit|의 2% 아래로 유지되는 데 걸리는 시간을 측정합니다.

SettlingMin응답이 상승한 후 y(t)의 최솟값
SettlingMax응답이 상승한 후 y(t)의 최댓값
Overshoot백분율 오버슈트. 정규화된 응답 ynorm(t) = (y(t) – yinit)/(yfinal – yinit)를 기준으로, 오버슈트는 0과 100 × max(ynorm(t) – 1) 중 더 큰 값입니다.
Undershoot백분율 언더슈트. 정규화된 응답 ynorm(t)를 기준으로, 언더슈트는 0과 –100 × max(ynorm(t) – 1) 중 더 작은 값입니다.
Peak|y(t) – yinit|의 피크 값
PeakTime피크 값이 발생하는 시간

버전 내역

R2006a에 개발됨

모두 확장

참고 항목

|