Main Content

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

c2d

연속시간 모델을 이산시간 모델로 변환

설명

예제

sysd = c2d(sysc,Ts)는 입력에 영차 유지를 사용하고 샘플 시간 Ts를 사용하여 연속시간 동적 시스템 모델 sysc를 이산화합니다.

예제

sysd = c2d(sysc,Ts,method)는 이산화 방법을 지정합니다.

예제

sysd = c2d(sysc,Ts,opts)는 이산화에 대해 추가 옵션을 지정합니다.

[sysd,G] = c2d(___)(여기서 sysc는 상태공간 모델)는 상태공간 모델의 연속 초기 조건 x0u0을 이산시간 초기 상태 벡터 x[0].에 매핑하는 행렬 G를 반환합니다.

예제

모두 축소

다음 연속시간 전달 함수를 이산화합니다.

H(s)=e-0.3ss-1s2+4s+5.

이 시스템에는 0.3초의 입력 지연이 있습니다. 샘플 시간 Ts = 0.1초로 삼각(일차 유지) 근사를 사용하여 시스템을 이산화합니다.

H = tf([1 -1],[1 4 5],'InputDelay', 0.3); 
Hd = c2d(H,0.1,'foh');

연속시간 시스템과 이산시간 시스템의 계단 응답을 비교합니다.

step(H,'-',Hd,'--')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent H, Hd.

입력에 대한 영차 유지와 10Hz 샘플링 레이트를 사용하여 다음과 같은 지연된 전달 함수를 이산화합니다.

H(s)=e-0.25s10s2+3s+10.

h = tf(10,[1 3 10],'IODelay',0.25); 
hd = c2d(h,0.1)
hd =
 
           0.01187 z^2 + 0.06408 z + 0.009721
  z^(-3) * ----------------------------------
                 z^2 - 1.655 z + 0.7408
 
Sample time: 0.1 seconds
Discrete-time transfer function.

이 예제에서 이산화된 모델 hd는 샘플링 주기 3만큼의 지연을 갖습니다. 이산화 알고리즘은 잔차 절반 주기 지연을 hd의 계수로 흡수합니다.

연속시간 모델과 이산시간 모델의 계단 응답을 비교합니다.

step(h,'--',hd,'-')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent h, hd.

2개의 상태와 1개의 입력 지연을 갖는 연속시간 상태공간 모델을 만듭니다.

sys = ss(tf([1,2],[1,4,2]));
sys.InputDelay = 2.7
sys =
 
  A = 
       x1  x2
   x1  -4  -2
   x2   1   0
 
  B = 
       u1
   x1   2
   x2   0
 
  C = 
        x1   x2
   y1  0.5    1
 
  D = 
       u1
   y1   0
 
  Input delays (seconds): 2.7 
 
Continuous-time state-space model.

Tustin 이산화 방법과 Thiran 필터로 분수 지연을 모델링하여 모델을 이산화합니다. 샘플 시간 Ts는 1초입니다.

opt = c2dOptions('Method','tustin','FractDelayApproxOrder',3);
sysd1 = c2d(sys,1,opt)
sysd1 =
 
  A = 
              x1         x2         x3         x4         x5
   x1    -0.4286    -0.5714   -0.00265    0.06954      2.286
   x2     0.2857     0.7143  -0.001325    0.03477      1.143
   x3          0          0    -0.2432     0.1449    -0.1153
   x4          0          0       0.25          0          0
   x5          0          0          0      0.125          0
 
  B = 
             u1
   x1  0.002058
   x2  0.001029
   x3         8
   x4         0
   x5         0
 
  C = 
              x1         x2         x3         x4         x5
   y1     0.2857     0.7143  -0.001325    0.03477      1.143
 
  D = 
             u1
   y1  0.001029
 
Sample time: 1 seconds
Discrete-time state-space model.

이산화된 모델은 이제 3차 타이란 필터에 대응되는 3개의 추가 상태, 즉 x3, x4, x5를 포함합니다. 시간 지연을 샘플 시간으로 나눈 값은 2.7이므로 3차 Thiran 필터('FractDelayApproxOrder' = 3)가 전체 시간 지연을 근사할 수 있습니다.

연속시간 전달 함수를 추정하고 이를 이산화합니다.

load iddata1
sys1c = tfest(z1,2);
sys1d = c2d(sys1c,0.1,'zoh');

2차 이산시간 전달 함수를 추정합니다.

sys2d = tfest(z1,2,'Ts',0.1);

이산화된 연속시간 전달 함수 모델 sys1d의 응답과 직접 추정된 이산시간 모델 sys2d의 응답을 비교합니다.

compare(z1,sys1d,sys2d)

Figure contains an axes. The axes contains 3 objects of type line. These objects represent z1 (y1), sys1d: 70.77%, sys2d: 69.3%.

두 시스템은 거의 동일합니다.

식별된 상태공간 모델을 이산화하여 1-스텝 사전 응답을 예측하는 모델을 작성합니다.

추정 데이터를 사용하여 식별된 연속시간 상태공간 모델을 만듭니다.

load iddata2
sysc = ssest(z2,4);

sysc의 1-스텝 사전 응답을 예측합니다.

predict(sysc,z2)

Figure contains an axes. The axes contains an object of type line. These objects represent z2 (y1), sysc.

모델을 이산화합니다.

sysd = c2d(sysc,0.1,'zoh');

이산화된 모델 sysd에서 예측 모델을 작성합니다.

[A,B,C,D,K] = idssdata(sysd);
Predictor = ss(A-K*C,[K B-K*D],C,[0 D],0.1);

Predictor는 측정된 출력 신호와 입력 신호 ([z1.y z1.u])를 사용하여 sysc의 한 스텝 다음 응답을 예측하여 계산하는 2-입력 모델입니다.

predict 명령과 동일한 응답을 얻도록 예측 모델을 시뮬레이션합니다.

lsim(Predictor,[z2.y,z2.u])

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

예측 모델의 시뮬레이션은 predict(sysc,z2)와 동일한 응답을 제공합니다.

입력 인수

모두 축소

연속시간 모델로, idtf, idss 또는 idpoly와 같은 동적 시스템 모델로 지정됩니다. sysc는 주파수 응답 데이터 모델일 수 없습니다. sysc는 SISO 또는 MIMO 시스템이 될 수 있으나, 'matched' 이산화 방법은 SISO 시스템만 지원합니다.

sysc는 입력/출력 또는 내부 시간 지연을 가질 수 있으나, 'matched', 'impulse''least-squares' 방법은 내부 시간 지연을 갖는 상태공간 모델을 지원하지 않습니다.

다음과 같은 식별된 선형 시스템은 직접 이산화될 수 없습니다.

  • FunctionType'c'idgrey 모델. 먼저 idss 모델로 변환하십시오.

  • idproc 모델. 먼저 idtf 또는 idpoly 모델로 변환하십시오.

샘플 시간으로, 결과로 생성되는 이산시간 시스템의 샘플링 주기를 나타내는 양의 스칼라로 지정됩니다. Tssysc.TimeUnit 속성인 TimeUnit를 단위로 합니다.

이산화 방법으로, 다음 값 중 하나로 지정됩니다.

  • 'zoh' — 영차 유지(디폴트 값). 제어 입력이 샘플 시간 Ts에서 조각별 상수라고 가정합니다.

  • 'foh' — 삼각 근사(변형 일차 유지). 제어 입력이 샘플 시간 Ts에서 조각별 선형이라고 가정합니다.

  • 'impulse' — 임펄스 불변 이산화

  • 'tustin' — 쌍선형(Tustin) 방법. 주파수 사전 워핑(이전 명칭: 'prewarp' 방법)과 함께 이 방법을 지정하려면 c2dOptionsPrewarpFrequency 옵션을 사용하십시오.

  • 'matched' — 영점-극점 대응 방법

  • 'least-squares' — 최소제곱 방법

  • 'damped'TRBDF2 수식을 기반으로 하는 감쇠 Tustin 근사법(희소 모델의 경우에만 해당).

각 변환 방법의 알고리즘에 대한 자세한 내용은 Continuous-Discrete Conversion Methods 항목을 참조하십시오.

이산화 옵션으로, c2dOptions 객체로 지정됩니다. 예를 들어, 사전 워핑 주파수, Thiran 필터의 차수 또는 이산화 방법을 옵션으로 지정할 수 있습니다.

출력 인수

모두 축소

이산시간 모델로, 입력 시스템 sysc와 동일한 유형의 동적 시스템 모델로 반환됩니다.

sysc가 식별된(IDLTI) 모델인 경우 sysd

  • sysc의 측정된 구성요소와 잡음 구성요소를 모두 포함합니다. NoiseVariance 속성에 저장된, 식별된 연속시간 모델 sysc의 혁신 분산 λ는 잡음 스펙트럼의 스펙트럼 밀도의 강도로 해석됩니다. 따라서 sysd의 잡음 분산은 λ/Ts입니다.

  • sysc의 파라미터 공분산 추정값을 포함하지 않습니다. 모델을 이산화할 때 공분산을 변환하려면 translatecov를 사용하십시오.

상태공간 모델 sysc의 연속시간 초기 조건 x0u0의 이산시간 초기 상태 벡터 x[0]으로의 매핑으로, 행렬로 반환됩니다. 초기 조건의 초기 상태 벡터로의 매핑은 다음과 같습니다.

x[0]=G[x0u0]

시간 지연이 있는 상태공간 모델의 경우 c2d는 지연을 이산화한 결과 발생한 추가 상태를 고려하여 행렬 G를 0으로 채웁니다. 이산화된 시스템에서 시간 지연을 모델링하는 방법에 대한 논의는 Continuous-Discrete Conversion Methods 항목을 참조하십시오.

R2006a 이전에 개발됨