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,'--')

입력에 대한 영차 유지와 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,'-')

R2024a 이후

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','ThiranOrder',3);
sysd1 = c2d(sys,1,opt)
sysd1 =
 
  A = 
            x1       x2
   x1  -0.4286  -0.5714
   x2   0.2857   0.7143
 
  B = 
           u1
   x1  0.5714
   x2  0.2857
 
  C = 
           x1      x2
   y1  0.2857  0.7143
 
  D = 
           u1
   y1  0.2857
 
  (values computed with all internal delays set to zero)

  Internal delays (sampling periods): 1  1  1 
 
Sample time: 1 seconds
Discrete-time state-space model.

기본적으로, 이 함수는 이산화된 모델에서 추가 지연을 내부 지연으로 모델링합니다. 이산화된 모델에서 추가 지연을 상태로 모델링하려면 c2dOptionsDelayModeling 옵션을 'state'로 설정합니다.

opt2 = c2dOptions('Method','tustin','ThiranOrder',3,'DelayModeling','state');
sysd2 = c2d(sys,1,opt2)
sysd2 =
 
  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 필터('ThiranOrder' = 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)

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

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

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

load iddata2
sysc = ssest(z2,4);

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

predict(sysc,z2)

모델을 이산화합니다.

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])

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

입력 인수

모두 축소

연속시간 모델로, tf, ss 또는 zpk와 같은 동적 시스템 모델로 지정됩니다. 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 근사(sparss 모델의 경우에만 해당).

각 변환 방법의 알고리즘에 대한 자세한 내용은 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 이전에 개발됨

모두 확장