# c2d

## 语法

``sysd = c2d(sysc,Ts)``
``sysd = c2d(sysc,Ts,method)``
``sysd = c2d(sysc,Ts,opts)``
``[sysd,G] = c2d(___)``

## 说明

``sysd = c2d(sysc,Ts)` 离散化连续时间 动态系统模型 `sysc`，对输入使用零阶保持并使用 `Ts` 的采样时间。`

``sysd = c2d(sysc,Ts,method)` 指定离散化方法。`

``sysd = c2d(sysc,Ts,opts)` 指定离散化的附加选项。`

``[sysd,G] = c2d(___)`（其中 `sysc` 是状态空间模型）返回一个矩阵 `G`，该矩阵将状态空间模型的连续初始条件 x0 和 u0 映射到离散时间初始状态向量 x[0].`

## 示例

`$H\left(s\right)={e}^{-0.3s}\frac{s-1}{{s}^{2}+4s+5}.$`

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

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

`$H\left(s\right)={e}^{-0.25s}\frac{10}{{s}^{2}+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. ```

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

```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. ```

```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. ```

```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. ```

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

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

`compare(z1,sys1d,sys2d)`

```load iddata2 sysc = ssest(z2,4);```

`predict(sysc,z2)`

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

```[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` 的超前 1 步预测响应。

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

## 输入参数

`sysc` 可以有输入/输出或内部时滞；然而，`'matched'``'impulse'``'least-squares'` 方法不支持具有内部时滞的状态空间模型。

• `idgrey` 模型，其 `FunctionType``'c'`。首先转换为 `idss` 模型。

• `idproc` 模型。首先转换为 `idtf``idpoly` 模型。

• `'zoh'` - 零阶保持（默认值）。假定控制输入在采样时间周期 `Ts` 内是分段常量。

• `'foh'` - 三角形逼近（修正一阶保持）。假定控制输入在采样时间周期 `Ts` 内是分段线性值。

• `'impulse'` - 冲激不变离散化

• `'tustin'` - 双线性（突斯汀）方法。要使用频率预修正指定此方法（以前称为 `'prewarp'` 方法），请使用 `c2dOptions``PrewarpFrequency` 选项。

• `'matched'` - 零极点匹配法

• `'least-squares'` - 最小二乘法

• `'damped'` - 仅基于 `sparss` 模型的 `TRBDF2` 公式的阻尼突斯汀逼近。

## 输出参量

`sysc` 是辨识的 (IDLTI) 模型 `sysd` 时：

• 同时包括 `sysc` 的测量组件和噪声。连续时间辨识模型 `sysc` 的新信息方差 λ，存储在其 `NoiseVariance` 属性中，解释为噪声频谱的频谱密度的强度。因此 `sysd` 中的噪声方差为 λ/Ts

• 不包括 `sysc` 的估计参数协方差。如果要在离散化模型时转换协方差，请使用 `translatecov`

`$x\left[\text{ }0\right]=G\cdot \left[\begin{array}{c}{x}_{0}\\ {u}_{0}\end{array}\right]$`

## 另请参阅

| | | | (System Identification Toolbox) |