이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

step

동적 시스템의 계단 응답 플롯, 계단 응답 데이터

구문

step(sys)
step(sys,Tfinal)
step(sys,t)
step(sys1,sys2,...,sysN)
step(sys1,sys2,...,sysN,Tfinal)
step(sys1,sys2,...,sysN,t)
y = step(sys,t)
[y,t] = step(sys)
[y,t] = step(sys,Tfinal)
[y,t,x] = step(sys)
[y,t,x,ysd] = step(sys)
[y,...] = step(sys,...,options)

설명

step은 동적 시스템의 계단 응답을 계산합니다. 상태공간의 경우 초기 상태가 0으로 가정됩니다. 출력 인수 없이 호출할 경우 이 함수는 화면에 계단 응답을 플로팅합니다.

step(sys) 는 임의의 동적 시스템 모델 sys의 계단 응답을 플로팅합니다. 이 모델은 연속시간 모델 또는 이산시간 모델일 수 있고 SISO 또는 MIMO일 수 있습니다. 다중 입력 시스템의 계단 응답은 각 입력 채널에 대한 계단 응답의 모음입니다. 시뮬레이션의 지속 시간은 시스템 극점과 영점을 기준으로 자동으로 정해집니다.

step(sys,Tfinal)t = 0부터 마지막 시간 t = Tfinal까지의 계단 응답을 시뮬레이션합니다. TfinalsysTimeUnit 속성에 지정된 시스템 시간 단위로 표현합니다. 샘플 시간이 지정되지 않은(Ts = -1) 이산시간 시스템의 경우 stepTfinal을 시뮬레이션할 샘플링 주기의 개수로 해석합니다.

step(sys,t)는 시뮬레이션에 사용자 제공 시간 벡터 t를 사용합니다. tsysTimeUnit 속성에 지정된 시스템 시간 단위로 표현합니다. 이산시간 모델의 경우 tTi:Ts:Tf 형식이어야 합니다. 여기서 Ts는 샘플 시간입니다. 연속시간 모델의 경우 tTi:dt:Tf 형식이어야 합니다. 여기서 dt는 연속 시스템에 대한 이산 근사의 샘플 시간이 됩니다(알고리즘 참조). step 명령은 Ti와 관계없이 항상 t=0에서 계단 입력을 적용합니다.

여러 모델 sys1,..., sysN의 계단 응답을 단일 Figure에 플로팅하려면 다음을 사용하십시오.

step(sys1,sys2,...,sysN)

step(sys1,sys2,...,sysN,Tfinal)

step(sys1,sys2,...,sysN,t)

단일 플롯에 플로팅한 모든 시스템은 동일한 개수의 입력과 출력을 가져야 합니다. 단, 단일 플롯에 연속시간 시스템과 이산시간 시스템이 서로 섞여 있는 것은 허용됩니다. 이 구문은 여러 시스템의 계단 응답을 비교할 때 유용합니다.

각 시스템에 대해 특정 색, 선 스타일, 마커 또는 세 가지 모두를 지정할 수도 있습니다. 예를 들어, 다음은

step(sys1,'y:',sys2,'g--')

sys1의 계단 응답을 노란색 점선으로 플로팅하고 sys2의 계단 응답을 녹색 파선으로 플로팅합니다.

출력 인수와 함께 호출할 경우:

y = step(sys,t)

[y,t] = step(sys)

[y,t] = step(sys,Tfinal)

[y,t,x] = step(sys)

step은 출력 응답 y, 시뮬레이션에 사용되는 시간 벡터 t(입력 인수로 제공되지 않은 경우)와 상태 궤적 x(상태공간 모델에만 해당)를 반환합니다. 플롯이 화면에 그려지지는 않습니다. 단일 입력 시스템의 경우 y는 행 수가 시간 샘플의 개수(t의 길이)와 같고 열 수가 출력의 개수와 같습니다. 다중 입력 시스템의 경우 각 입력 채널의 계단 응답은 y의 세 번째 차원을 따라 누적됩니다. 이때 y의 차원은 다음과 같습니다.

(lengthoft)×(numberofoutputs)×(numberofinputs)

y(:,:,j)j번째 입력 채널에 적용되는 단위 계단 명령에 대한 응답을 제공합니다. 마찬가지로, x의 차원은 다음과 같습니다.

(lengthoft)×(numberofstates)×(numberofinputs)

식별된 모델의 경우(idltiidnlmodlel 참조) [y,t,x,ysd] = step(sys) 는 응답 y의 표준편차 ysd도 계산합니다(sys가 파라미터 공분산 정보를 포함하지 않을 경우 ysd는 비어 있음).

[y,...] = step(sys,...,options)는 계단 진폭이나 입력 오프셋과 같이 계단 응답 계산에 대한 추가 옵션을 지정합니다. 옵션 세트 options를 만들려면 stepDataOptions를 사용하십시오.

예제

모두 축소

다음과 같은 2차 상태공간 모델의 계단 응답을 플로팅합니다.

[x˙1x˙2]=[-0.5572-0.78140.78140][x1x2]+[1-102][u1u2]y=[1.96916.4493][x1x2]

a = [-0.5572,-0.7814;0.7814,0];
b = [1,-1;0,2];
c = [1.9691,6.4493];
sys = ss(a,b,c,0);
step(sys)

왼쪽 플롯은 첫 번째 입력 채널의 계단 응답을 보여주고, 오른쪽 플롯은 두 번째 입력 채널의 계단 응답을 보여줍니다.

지연이 있는 피드백 루프를 만들고 계단 응답을 플로팅합니다.

s = tf('s');
G = exp(-s) * (0.8*s^2+s+2)/(s^2+s);
T = feedback(ss(G),1);
step(T)

표시된 시스템 계단 응답은 복잡합니다. 내부 지연이 있는 시스템의 계단 응답은 반복되는 비약과 같은 이상한 동작을 보일 수 있습니다. 이러한 동작은 시스템의 특징이며 소프트웨어 이상이 아닙니다.

식별된 모수적 모델의 계단 응답을 비모수적(경험적) 모델과 비교합니다. 3σ 신뢰영역도 확인합니다.

데이터를 불러옵니다.

load iddata1 z1

모수적 모델을 추정합니다.

sys1 = ssest(z1,4);

비모수적 모델을 추정합니다.

sys2 = impulseest(z1);

비교를 위해 계단 응답을 플로팅합니다.

t = (0:0.1:10)';
[y1, ~, ~, ysd1] = step(sys1,t);
[y2, ~, ~, ysd2] = step(sys2,t);
plot(t, y1, 'b', t, y1+3*ysd1, 'b:', t, y1-3*ysd1, 'b:')
hold on
plot(t, y2, 'g', t, y2+3*ysd2, 'g:', t, y2-3*ysd2, 'g:')

선형 모델과 비선형 모델의 작은 진폭 계단 응답을 비교하여 비선형 ARX 모델의 선형화를 검증합니다.

데이터를 불러옵니다.

load iddata2 z2;

비선형 ARX 모델을 추정합니다.

nlsys = nlarx(z2,[4 3 10],'tree','custom',{'sin(y1(t-2)*u1(t))+y1(t-2)*u1(t)+u1(t).*u1(t-13)','y1(t-5)*y1(t-5)*y1(t-1)'},'nlr',[1:5, 7 9]);

정상 상태 입력값 1에 대응되는 nlsys의 평형 동작점을 찾습니다.

u0 = 1;
[X,~,r] = findop(nlsys, 'steady', 1);
y0 = r.SignalLevels.Output;

이 동작점에서 nlsys의 선형 근사를 얻습니다.

sys = linearize(nlsys,u0,X);

sys의 작은 진폭 계단 응답을 nlsys의 작은 진폭 계단 응답과 비교하여 sys의 유용성을 검증합니다.

비선형 시스템 nlsys(u0, y0)으로 규정되는 평형 수준에서 작동합니다. 이 정상 상태에 크기가 0.1인 계단 섭동을 적용하고 그에 대한 응답을 계산합니다.

opt = stepDataOptions;
opt.InputOffset = u0;
opt.StepAmplitude = 0.1;
t = (0:0.1:10)';
ynl = step(nlsys, t, opt);

선형 시스템 sys는 입력의 섭동과 그에 대응하는 출력의 섭동 사이의 관계를 표현합니다. 이 시스템은 비선형 시스템의 평형 값을 모릅니다.

선형 시스템의 계단 응답을 플로팅합니다.

opt = stepDataOptions;
opt.StepAmplitude = 0.1;
yl = step(sys, t, opt);

선형 시스템의 응답에 정상 상태 오프셋 y0을 추가하고 응답을 플로팅합니다.

plot(t, ynl, t, yl+y0)
legend('Nonlinear', 'Linear with offset')

식별된 시계열 모델의 계단 응답을 계산합니다.

신호 모델이라고도 하는 시계열 모델은 측정된 입력 신호가 없는 모델입니다. 이 모델의 계단 플롯은 (측정되지 않은) 잡음 채널을 계단 신호가 적용되는 입력 채널로 사용합니다.

데이터를 불러옵니다.

load iddata9;

시계열 모델을 추정합니다.

sys = ar(z9, 4);

ysA y(t) = e(t) 형식의 모델입니다. 여기서 e(t)는 잡음 채널을 나타냅니다. 계단 응답의 계산을 위해, e(t)는 입력 채널로 취급되고 이름이 e@y1이 됩니다.

계단 응답을 플로팅합니다.

step(sys)

한 예로 단위 같은 플롯의 속성을 변경할 수 있습니다. 플롯의 속성을 변경하는 방법에 대한 자세한 내용은 Ways to Customize Plots 항목을 참조하십시오.

알고리즘

내부 지연이 없는 연속시간 모델은 상태공간으로 변환되고 입력에 대해 영차수 유지를 사용하여 이산화됩니다. 샘플 시간은 시스템 동특성을 기반으로 자동으로 선택됩니다. 단, 시간 벡터 t = 0:dt:Tf가 제공된 경우는 예외이며, 이 경우에는 dt가 샘플링 주기로 사용됩니다. 결과로 생성되는 시뮬레이션 시간 스텝 t는 간격 dt를 사용해 같은 간격으로 샘플링됩니다.

내부 지연이 있는 시스템의 경우 Control System Toolbox™는 가변 스텝 솔버를 사용합니다. 그 결과 시간 스텝 t는 같은 간격으로 샘플링되지 않습니다.

참고 문헌

[1] L.F. Shampine and P. Gahinet, "Delay-differential-algebraic equations in control theory," Applied Numerical Mathematics, Vol. 56, Issues 3–4, pp. 574–588.

R2006a 이전에 개발됨