Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

lsim

임의의 입력에 대한 동적 시스템의 시뮬레이션된 시간 응답 플로팅, 시뮬레이션된 응답 데이터

설명

응답 플롯

예제

lsim(sys,u,t)는 입력 이력(t,u)에 대한 동적 시스템 모델 sys의 시뮬레이션된 시간 응답을 플로팅합니다. 벡터 t는 시뮬레이션에 사용할 시간 샘플을 지정합니다. 단일 입력 시스템의 경우, 입력 신호 ut와 동일한 길이의 벡터입니다. 다중 입력 시스템의 경우, u는 행 수가 시간 샘플의 개수(length(t))와 같고 열 수가 sys에 대한 입력의 개수와 같은 배열입니다.

예제

lsim(sys,u,t,x0)sys가 상태공간 모델인 경우, 초기 상태 값의 벡터 x0을 추가로 지정합니다.

lsim(sys,u,t,x0,method)sys가 연속시간 모델인 경우, lsim이 샘플들 사이의 입력값을 보간하는 방법을 지정합니다.

예제

lsim(sys1,sys2,...,sysN,u,t,___)는 동일한 입력 이력에 대한 여러 동적 시스템 모델의 응답을 시뮬레이션하고 이들 응답을 단일 Figure에 플로팅합니다. 모든 시스템은 동일한 개수의 입력과 출력을 가져야 합니다. 여러 모델의 응답을 계산할 때 x0method 입력 인수를 사용할 수도 있습니다.

예제

lsim(sys1,LineSpec1,...,sysN,LineSpecN,___)은 플롯에 있는 각 시스템의 색, 선 스타일 및 마커를 지정합니다. 추가 플롯 사용자 지정 옵션이 필요하면 대신 lsimplot을 사용하십시오.

응답 데이터

예제

y = lsim(sys,u,t)는 입력과 동일한 시간 t에 샘플링된 시스템 응답 y를 반환합니다. 단일 출력 시스템의 경우, yt와 동일한 길이의 벡터입니다. 다중 출력 시스템의 경우, y는 행 수가 시간 샘플의 개수(length(t))와 같고 열 수가 sys에 포함된 출력의 개수와 같은 배열입니다. 이 구문은 플롯을 생성하지 않습니다.

y = lsim(sys,u,t,x0)sys가 상태공간 모델인 경우, 초기 상태 값의 벡터 x0을 추가로 지정합니다.

y = lsim(sys,u,t,x0,method)sys가 연속시간 모델인 경우, lsim이 샘플들 사이의 입력값을 보간하는 방법을 지정합니다.

예제

[y,tOut,x] = lsim(___)sys가 상태공간 모델인 경우, 상태 궤적 x를 반환합니다. x는 행 수가 시간 샘플의 개수와 같고 열 수가 sys에 포함된 상태의 개수와 같은 배열입니다. 또한 이 구문은 시뮬레이션에 사용된 시간 샘플을 tOut에 반환합니다.

선형 시뮬레이션 툴

lsim(sys)는 선형 시뮬레이션 툴을 엽니다. 이 툴을 사용하여 선형 분석을 수행하는 방법에 대한 자세한 내용은 선형 시뮬레이션 툴로 작업하기 (Control System Toolbox)를 참조하십시오.

예제

모두 축소

다음과 같은 전달 함수가 있다고 가정하겠습니다.

sys = tf(3,[1 2 3])
sys =
 
        3
  -------------
  s^2 + 2 s + 3
 
Continuous-time transfer function.

임의의 입력 신호에 대한 이 시스템의 응답을 계산하려면, 응답을 계산하려는 시간 벡터 t 및 그에 대응하는 신호 값을 포함한 벡터 ulsim에 제공합니다. 예를 들어, 시간 t = 0일 때 0으로 시작하고 t = 1일 때 0에서부터 증가하기 시작하여 t = 2일 때 1에 도달한 다음, 이후 1로 유지되는 램프 계단 신호에 대한 시스템 응답을 플로팅해 보겠습니다. t를 정의하고 u의 값을 계산합니다.

t = 0:0.04:8;  % 201 points
u = max(0,min(t-1,1));

lsim을 출력 인수 없이 사용하여 이 신호에 대한 시스템 응답을 플로팅합니다.

lsim(sys,u,t)
grid on

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Driving inputs, sys.

이 플롯은 적용된 입력 (u,t)를 회색으로 표시하고, 시스템 응답을 파란색으로 표시합니다.

lsim을 출력 인수와 함께 사용하여 시뮬레이션된 응답 데이터를 얻습니다.

y = lsim(sys,u,t);
size(y)
ans = 1×2

   201     1

벡터 yt의 대응하는 시간에서 시뮬레이션된 응답을 포함합니다.

gensig (Control System Toolbox)를 사용하여 lsim에 사용할 사인파, 구형파 같은 주기적 입력 신호를 만듭니다. 다음 SISO 상태공간 모델의 구형파에 대한 응답을 시뮬레이션합니다.

A = [-3 -1.5; 5 0];
B = [1; 0];
C = [0.5 1.5];
D = 0;
sys = ss(A,B,C,D);

이 예제에서는 주기가 10초이고 지속 시간이 20초인 구형파를 만들어 보겠습니다.

[u,t] = gensig("square",10,20);

gensig는 시간 스텝으로 구성된 벡터 t와 대응하는 입력 신호 값을 포함하는 벡터 u를 반환합니다. (t에 대해 샘플 시간을 지정하지 않으면 gensig는 주기마다 64개의 샘플을 생성합니다.) 이들을 lsim에 사용하여 시스템 응답을 플로팅합니다.

lsim(sys,u,t)
grid on

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Driving inputs, sys.

이 플롯은 적용된 구형파를 회색으로 표시하고, 시스템 응답을 파란색으로 표시합니다. lsim을 출력 인수와 함께 호출하여 t의 각 시점에서의 응답 값을 구합니다.

[y,~] = lsim(sys,u,t);

이산시간 시스템의 응답을 시뮬레이션할 때 시간 벡터 tTi:dT:Tf 형식이어야 합니다. 여기서 dT는 모델의 샘플 시간입니다. 램프 계단 입력에 대한 다음 이산시간 전달 함수의 응답을 시뮬레이션합니다.

sys = tf([0.06 0.05],[1 -1.56 0.67],0.05);

이 전달 함수의 샘플 시간은 0.05초입니다. 동일한 샘플 시간을 사용하여 시간 벡터 t와 램프 계단 신호 u를 생성합니다.

t = 0:0.05:4;  
u = max(0,min(t-1,1));

시스템 응답을 플로팅합니다.

lsim(sys,u,t)

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Driving inputs, sys.

주기적 입력 신호에 대한 이산시간 시스템의 응답을 시뮬레이션하려면 gensig에 동일한 샘플 시간을 사용하여 입력을 생성하십시오. 예를 들어, 주기가 1초이고 지속 시간이 4초인 사인파에 대한 시스템 응답을 시뮬레이션해 보겠습니다.

[u,t] = gensig("sine",1,4,0.05);

시스템 응답을 플로팅합니다.

lsim(sys,u,t)

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Driving inputs, sys.

lsim은 여러 동적 시스템의 시뮬레이션된 응답을 동일한 좌표축에 플로팅할 수 있습니다. 예를 들어, PI 제어기를 사용하는 경우와 PID 제어기를 사용하는 경우의 시스템의 폐루프 응답을 비교해 보겠습니다. 시스템의 전달 함수를 만들고 제어기를 조정합니다.

H = tf(4,[1 10 25]);
C1 = pidtune(H,'PI');
C2 = pidtune(H,'PID');

폐루프 시스템을 형성합니다.

sys1 = feedback(H*C1,1);
sys2 = feedback(H*C2,1);

주기가 4초인 구형파에 대해 이 두 시스템의 응답을 플로팅합니다.

[u,t] = gensig("square",4,12);
lsim(sys1,sys2,u,t)
grid on
legend("PI","PID")

Figure contains an axes. The axes contains 3 objects of type line. These objects represent Driving inputs, PI, PID.

기본적으로 lsim은 플로팅하는 각 시스템마다 다른 색을 선택합니다. LineSpec 입력 인수를 사용하여 색과 선 스타일을 지정할 수 있습니다.

 lsim(sys1,"r--",sys2,"b",u,t)
 grid on
 legend("PI","PID")

Figure contains an axes. The axes contains 3 objects of type line. These objects represent Driving inputs, PI, PID.

첫 번째 LineSpec "r--"은 PI 제어기를 사용한 응답에 대해 빨간색 파선을 지정합니다. 두 번째 LineSpec "b"는 PID 제어기를 사용한 응답에 대해 파란색 실선을 지정합니다. 범례에 지정된 색과 선 스타일을 반영합니다. 플롯 사용자 지정 옵션에 대한 자세한 내용은 lsimplot을 참조하십시오.

MIMO 시스템의 경우, 각 시간 스텝 t에서 입력 u(t)는 입력 개수와 동일한 길이의 벡터입니다. lsim을 사용하려면 u를 차원이 Nt×Nu인 행렬로 지정합니다. 여기서 Nu는 시스템 입력의 개수이고 Ntt의 길이입니다. 즉, u의 각 열은 대응하는 시스템 입력에 적용되는 입력 신호입니다. 예를 들어, 201개 시간 스텝에 대해 4개의 입력을 갖는 시스템을 시뮬레이션하려면 u를 4개의 열과 201개의 행으로 구성된 행렬로 제공합니다. 여기서 각 행 u(i,:)i번째 시간 스텝에서의 입력값으로 구성된 벡터이고, 각 열 u(:,j)j번째 입력에 적용된 신호입니다.

마찬가지로 lsim으로 계산된 출력 y(t)는 각 열이 각 시스템 출력의 신호를 나타내는 행렬입니다. lsim을 사용하여 시뮬레이션된 응답을 플로팅하면 lsim은 각 출력마다 별도의 좌표축을 제공하여, 모든 입력에 적용된 입력 u(t)에 대한 시스템 응답을 각 출력 채널에 표시합니다.

다음 상태공간 행렬을 가지는 2-입력 3-출력 상태공간 모델이 있다고 가정하겠습니다.

A = [-1.5  -0.2   1.0;
     -0.2  -1.7   0.6;
      1.0   0.6  -1.4];
  
B = [ 1.5  0.6;
     -1.8  1.0;
      0    0  ];

C = [ 0    -0.5 -0.1;
      0.35 -0.1 -0.15
      0.65  0    0.6];
  
D = [ 0.5  0;
      0.05 0.75
      0    0];

sys = ss(A,B,C,D);

첫 번째 입력에 적용된 주기가 4초인 구형파에 대한 sys의 응답과 3초마다 두 번째 입력에 적용된 펄스에 대한 sys의 응답을 플로팅합니다. 이렇게 하기 위해 gensig를 사용하여 구형파와 펄스 신호를 나타내는 열 벡터를 만들겠습니다. 그런 다음, 이들 열이 누적된 하나의 입력 행렬을 만듭니다. 두 신호가 동일한 샘플 수를 갖도록 하기 위해 종료 시간과 샘플 시간을 서로 동일하게 지정합니다.

Tf = 10;
Ts = 0.1;
[uSq,t] = gensig("square",4,Tf,Ts);
[uP,~] = gensig("pulse",3,Tf,Ts);
u = [uSq uP];
lsim(sys,u,t)

Figure contains 3 axes. Axes 1 contains 3 objects of type line. These objects represent Driving inputs, sys. Axes 2 contains 3 objects of type line. These objects represent Driving inputs, sys. Axes 3 contains 3 objects of type line. These objects represent Driving inputs, sys.

모든 입력에 적용된 신호 u에 대한 3개 시스템 출력의 응답이 각각 별도의 좌표축에 표시됩니다. 또한 각 플롯은 모든 입력 신호를 회색으로 표시합니다.

기본적으로 lsim은 시뮬레이션 시작 시 모든 상태들이 0이라고 가정하여 모델을 시뮬레이션합니다. 상태공간 모델의 응답을 시뮬레이션할 때 0이 아닌 초기 상태 값을 지정하려면 선택적 x0 입력 인수를 사용합니다. 다음과 같은 2-상태 SISO 상태공간 모델이 있다고 가정하겠습니다.

A = [-1.5 -3;
      3   -1];
B = [1.3; 0];
C = [1.15 2.3];
D = 0;
          
sys = ss(A,B,C,D);

시스템이 처음 2초 동안은 입력 없이 알려진 초기 상태 세트에서 변화하다가 단위 계단 변경을 적용하려 한다고 가정하겠습니다. 초기 상태 값으로 구성된 벡터 x0을 지정하고 입력 벡터를 만듭니다.

x0 = [-0.2 0.3];
t = 0:0.05:8;
u = zeros(length(t),1);
u(t>=2) = 1;
lsim(sys,u,t,x0)
grid on

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Driving inputs, sys.

플롯의 앞쪽 절반은 초기 상태 값 [-0.2 0.3]에서 시스템의 자유로운 변화를 보여줍니다. t = 2에서 입력에 계단 변동이 적용되면서 플롯에서 이 시점의 상태 값에서 시작하는 새로운 신호에 대한 시스템 응답이 나타납니다.

출력 인수와 함께 lsim을 사용하면 lsim은 시뮬레이션된 응답 데이터를 배열로 반환합니다. SISO 시스템의 경우, 응답 데이터는 t와 동일한 길이의 열 벡터로 반환됩니다. 예를 들어, 구형파에 대한 SISO 시스템의 응답을 추출해 보겠습니다. gensig를 사용하여 구형파를 만듭니다.

sys = tf([2 5 1],[1 2 3]);
[u,t] = gensig("square",4,10,0.05);
[y,t] = lsim(sys,u,t);
size(y)
ans = 1×2

   201     1

벡터 yt의 각 시간 스텝에서의 시뮬레이션된 응답을 포함합니다. (편의를 위해 lsim은 시간 벡터 t를 반환합니다.)

MIMO 시스템의 경우, 응답 데이터는 차원이 N×Ny×Nu인 배열로 반환됩니다. 여기서 NyNu는 각각 동적 시스템의 출력 개수와 입력 개수입니다. 예를 들어, 2개의 입력과 3개의 출력을 갖는 3-상태 시스템을 나타내는 다음과 같은 상태공간 모델이 있다고 가정하겠습니다.

A = [-1.5  -0.2   1.0;
     -0.2  -1.7   0.6;
      1.0   0.6  -1.4];
  
B = [ 1.5  0.6;
     -1.8  1.0;
      0    0  ];

C = [ 0   -0.1 -0.2;
      0.7 -0.2 -0.3
     -0.65 0   -0.6];
  
D = [ 0.1  0;
      0.1  1.5
      0    0];

sys = ss(A,B,C,D);

두 입력 모두에 적용된 구형파에 대한 3개의 출력 채널의 응답을 추출합니다.

uM = [u u];
[y,t] = lsim(sys,uM,t);
size(y)
ans = 1×2

   201     3

y(:,j)는 두 입력 모두에 적용된 구형파에 대한 j번째 출력의 응답을 포함하는 열 벡터입니다. 즉, y(i,:)i번째 시간 스텝에서의 출력값인 3개의 값으로 구성된 벡터입니다.

sys는 상태공간 모델이므로 입력 신호에 대한 응답으로 달라지는 상태 값에 대한 시간적 변화를 추출할 수 있습니다.

[y,t,x] = lsim(sys,uM,t);
size(x)
ans = 1×2

   201     3

x의 각 행은 t에서 대응하는 시점에서의 상태 값 [x1,x2,x3]을 포함합니다. 즉, x(i,:)i번째 시간 스텝에서의 상태 벡터입니다. 상태 값을 플로팅합니다.

plot(t,x)

Figure contains an axes. The axes contains 3 objects of type line.

동일한 입력에 대해 여러 시스템의 응답 플로팅하기 예제에서는 단일 좌표축에 여러 개별 시스템의 응답을 플로팅하는 방법을 보여줍니다. 여러 동적 시스템이 모델 배열 안에 정렬되어 있으면 lsim은 모든 시스템의 응답을 한꺼번에 플로팅합니다.

모델 배열을 만듭니다. 이 예제에서는 고유 주파수가 서로 다른 2차 전달 함수로 구성된 1차원 배열을 사용합니다. 먼저, 모델 배열을 위한 메모리를 사전할당합니다. 다음 명령은 영이득 SISO 전달 함수로 구성된 1×5행을 만듭니다. 처음 두 개의 차원은 모델 출력과 모델 입력을 나타냅니다. 나머지 차원은 배열 차원입니다. (모델 배열과 이를 만드는 방법에 대한 자세한 내용은 Model Arrays (Control System Toolbox) 항목을 참조하십시오.)

sys = tf(zeros(1,1,1,5));

배열을 채웁니다.

w0 = 1.5:1:5.5;    % natural frequencies
zeta = 0.5;        % damping constant
for i = 1:length(w0)
   sys(:,:,1,i) = tf(w0(i)^2,[1 2*zeta*w0(i) w0(i)^2]);
end

배열에 포함된 모든 모델의 구형파 입력에 대한 응답을 플로팅합니다.

[u,t] = gensig("square",5,15);
lsim(sys,u,t)

Figure contains an axes. The axes contains 6 objects of type line. These objects represent Driving inputs, sys.

lsim은 배열에 포함된 모든 요소의 응답에 대해 동일한 선 스타일을 사용합니다. 요소를 구별하는 한 가지 방법은 동적 시스템 모델의 SamplingGrid 속성을 사용하여 배열의 각 요소를 이에 대응하는 w0 값과 연결하는 것입니다.

sys.SamplingGrid = struct('frequency',w0);

이제 MATLAB Figure 창에서 응답을 플로팅한 후 추적 선을 클릭하면 해당 응답에 대응하는 주파수 값을 확인할 수 있습니다.

모델을 추정할 추정 데이터를 불러옵니다.

load(fullfile(matlabroot,'toolbox','ident','iddemos','data','dcmotordata'));
z = iddata(y,u,0.1,'Name','DC-motor');

z는 샘플 시간을 0.1초로 하여 1-입력 2-출력 추정 데이터를 저장하는 iddata 객체입니다.

추정 데이터 z를 사용하여 4차 상태공간 모델을 추정합니다.

[sys,x0] = n4sid(z,4);

sys는 추정된 모델이고 x0은 추정된 초기 상태입니다.

추정에 사용된 것과 동일한 입력 데이터와 추정 명령이 반환한 초기 상태를 사용하여 sys의 응답을 시뮬레이션합니다.

[y,t,x] = lsim(sys,z.InputData,[],x0);

여기서 y는 시스템 응답이고 t는 시뮬레이션에 사용된 시간 벡터이고 x는 상태 궤적입니다.

두 출력에 대해 시뮬레이션된 응답 y를 측정된 응답 z.OutputData와 비교합니다.

subplot(211), plot(t,z.OutputData(:,1),'k',t,y(:,1),'r')
legend('Measured','Simulated')
subplot(212), plot(t,z.OutputData(:,2),'k',t,y(:,2),'r')
legend('Measured','Simulated')

Figure contains 2 axes. Axes 1 contains 2 objects of type line. These objects represent Measured, Simulated. Axes 2 contains 2 objects of type line. These objects represent Measured, Simulated.

샘플 시간의 선택은 시뮬레이션 결과에 크게 영향을 미칠 수 있습니다. 그 이유를 알아보기 위해 다음과 같은 2차 모델이 있다고 가정하겠습니다.

sys(s)=ω2s2+2s+ω2,ω=62.83.

샘플 시간 0.1초를 사용하여 주기가 1초인 구형파에 대한 이 모델의 응답을 시뮬레이션합니다.

w2 = 62.83^2;
sys = tf(w2,[1 2 w2]);

tau = 1;
Tf = 5;
Ts = 0.1;
[u,t] = gensig("square",tau,Tf,Ts);
lsim(sys,u,t)

lsim warning message: The input signal is undersampled.

lsim은 지정된 입력 신호를 사용하여 모델을 시뮬레이션하지만, 입력 신호가 언더샘플링되었다는 경고를 발생시킵니다. lsim은 입력 u의 주기마다 최소 64개의 샘플을 생성하는 샘플 시간을 권장합니다. 이 권장 사항이 중요한 이유를 확인하기 위해 권장된 최대 개수보다 적은 샘플 시간을 사용하여 sys를 다시 시뮬레이션해 보겠습니다.

figure
Ts2 = 0.01;
[u2,t2] = gensig("square",tau,Tf,Ts2);
lsim(sys,u2,t2)

이 응답은 언더샘플링되었을 때에는 숨겨져 있던 강한 진동 동작을 보입니다.

입력 인수

모두 축소

동적 시스템으로, SISO 또는 MIMO 동적 시스템 모델로 지정되거나 동적 시스템 모델로 구성된 배열로 지정됩니다. 응답을 시뮬레이션할 수 있는 동적 시스템은 다음과 같습니다.

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

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

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

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

  • 희소 상태공간 모델(예: sparss, mechss 모델).

  • 식별된 LTI 모델(예: idtf, idss, idproc 모델). 식별된 모델의 경우, sim 명령을 사용하여 시뮬레이션된 응답의 표준편차와 상태 궤적을 계산할 수도 있습니다. sim은 0이 아닌 초기 조건을 사용하여 모든 유형의 모델을 시뮬레이션할 수도 있고, 식별된 비선형 모델을 시뮬레이션할 수도 있습니다.

lsimfrd, genfrd, idfrd 모델 같은 주파수 응답 데이터 모델을 지원하지 않습니다.

sys가 모델로 구성된 배열인 경우 이 함수는 배열에 포함된 모든 모델의 응답을 동일한 좌표축에 플로팅합니다. 모델 배열 내 시스템의 응답 (Control System Toolbox) 항목을 참조하십시오.

시뮬레이션을 위한 입력 신호로, 단일 입력 시스템에서는 벡터로 지정되고 다중 입력 시스템에서는 배열로 지정됩니다.

  • 단일 입력 시스템의 경우, ut와 동일한 길이의 벡터입니다.

  • 다중 입력 시스템의 경우, u는 행 수가 시간 샘플의 개수(length(t))와 같고 열 수가 sys에 대한 입력의 개수와 같은 배열입니다. 즉, 각 행 u(i,:)는 시간 t(i)에서 sys의 입력에 적용된 값을 나타냅니다. 각 열 u(:,j)sysj번째 입력에 적용되는 신호입니다.

응답을 계산할 시간 샘플로, 0:dT:Tf 형식의 벡터로 지정됩니다. lsim 명령은 t가 모델 sysTimeUnit 속성에 지정된 단위를 갖는 것으로 해석합니다.

연속시간 sys의 경우 lsim 명령은 시간 스텝 dT를 사용하여 모델을 이산화합니다. dT가 시스템 동특성에 비해 너무 큰 경우(언더샘플링), lsim은 더 짧은 샘플링 시간을 권장하는 경고를 발생시킵니다. 샘플링 시간이 시뮬레이션에 미치는 영향에 대한 추가적인 논의는 샘플 시간이 시뮬레이션에 미치는 영향 (Control System Toolbox) 항목을 참조하십시오.

이산시간 sys의 경우 시간 스텝 dTsys의 샘플 시간과 같아야 합니다. 또는 t를 생략하거나 []로 설정할 수도 있습니다. 이 경우 lsimt를 0에서 시작하고 길이가 u와 같으며 sys.Ts와 동일한 시간 스텝을 갖는 벡터로 설정합니다.

상태공간 모델을 시뮬레이션하기 위한 초기 상태 값으로, sys의 각 상태에 대해 하나의 요소를 가진 벡터로 지정됩니다. 이 인수를 생략하면 lsimt = 0에서 모든 상태를 0으로 설정합니다.

연속시간 모델을 샘플링하기 위한 이산화 방법으로, 다음 중 하나로 지정됩니다.

  • 'zoh' — 영차 유지

  • 'foh' — 일차 유지

sys가 연속시간 모델이면 lsimt의 시간 스텝 dT = t(2)-t(1)과 동일한 샘플 시간을 사용해 모델을 이산화하여 시간 응답을 계산합니다. 이산화 방법을 지정하지 않는 경우 lsim은 신호 u의 매끄러운 정도를 기준으로 이산화 방법을 자동으로 선택합니다. 이 두 가지 이산화 방법에 대한 자세한 내용은 Continuous-Discrete Conversion Methods (Control System Toolbox) 항목을 참조하십시오.

선 스타일, 마커 및 색으로, string형이나 1개, 2개 또는 3개의 문자로 구성된 벡터로 지정됩니다. 문자는 어떤 순서로 지정해도 좋습니다. 세 가지 특성(선 스타일, 마커, 색)을 모두 지정할 필요는 없습니다. 예를 들어 선 스타일을 생략하고 마커를 지정하면 플롯은 마커만 표시하고 선은 표시하지 않습니다. 이 인수를 구성하는 방법에 대한 자세한 내용은 plot 함수의 LineSpec 입력 인수를 참조하십시오.

예: 'r--'은 빨간색 파선을 지정합니다.

예: '*b'는 파란색 별표 마커를 지정합니다.

예: 'y'는 노란색 선을 지정합니다.

출력 인수

모두 축소

시뮬레이션된 응답 데이터로, 배열로 반환됩니다.

  • 단일 입력 시스템의 경우, yt와 동일한 길이의 열 벡터입니다.

  • 다중 출력 시스템의 경우, y는 행 수가 시간 샘플의 개수(length(t))와 같고 열 수가 sys에 포함된 출력의 개수와 같은 배열입니다. 따라서 y의 j번째 열, 즉 y(:,j)는 모든 입력에 적용된 u에 대한 j번째 출력의 응답을 포함합니다.

시뮬레이션에 사용된 시간 벡터로, 열 벡터로 반환됩니다. 입력 시간 벡터 t0:dT:Tf 형식으로 지정한 경우 tOut = t입니다. t가 거의 같은 간격으로 샘플링된 경우 lsim은 시뮬레이션의 샘플 시간을 조정하고 그 결과를 tOut에 반환합니다. 이산시간 sys의 경우 t를 생략하거나 []로 설정할 수 있습니다. 이 경우 lsimt를 0에서 시작하고 길이가 u와 같으며 sys.Ts와 동일한 시간 스텝을 갖는 벡터로 설정하고, 그 결과를 tOut에 반환합니다.

상태 궤적으로, 배열로 반환됩니다. sys가 상태공간 모델인 경우, x는 입력에 대한 응답으로 달라지는 sys의 상태 변화를 포함합니다. x는 행 수가 시간 샘플의 개수((length(t)))와 같고 열 수가 sys에 포함된 상태의 개수와 같은 배열입니다.

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

알고리즘

다음과 같은 이산시간 전달 함수의 경우

sys(z1)=a0+a1z1++anzn1+b1z1++bnzn,

lsim은 이 전달 함수와 연결된 재귀를 기반으로 입력을 필터링합니다.

y[k]=a0u[k]++anu[kn]b1y[k1]bn[kn].

이산시간 zpk 모델의 경우, lsim은 일련의 1차섹션형 또는 2차섹션형(SOS)을 통해 입력을 필터링합니다. 이러한 접근법은 더 높은 차수의 모델에서 수치적으로 불안정해질 수 있는 분자 및 분모 다항식이 발생하는 것을 방지합니다.

이산시간 상태공간 모델의 경우, lsim은 다음 이산시간 상태공간 방정식을 전파합니다.

x[n+1]=Ax[n]+Bu[n],y[n]=Cx[n]+Du[n].

연속시간 시스템의 경우, lsimc2d를 사용하여 시스템을 먼저 이산화한 다음, 그 결과로 얻어지는 이산시간 상태공간 방정식을 전파합니다. method 입력 인수를 사용하여 별도로 지정하지 않으면, lsim은 입력 신호가 매끄러울 때에는 일차 유지 이산화 방법을 사용하고, 입력 신호가 펄스나 구형파와 같이 불연속인 경우에는 영차 유지를 사용합니다. 이산화를 위한 샘플 시간은 t에 지정한 시간 샘플 간의 간격 dT입니다.

참고 항목

함수

R2012a에 개발됨