2026a
M 语言

# c2d


将模型从连续时间转换为离散时间

# 语法

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

# 说明

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

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

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

# 示例

离散化传递函数

离散化以下连续时间传递函数:

% 示例 1: sysd = c2d(sysc, Ts) - 基本用法(默认零阶保持器)
clc; clear; close all;

% 1. 创建一个连续时间系统
% 传递函数: G(s) = 1 / (s^2 + 0.5s + 1)
num = 1;
den = [1, 0.5, 1];
sysc = tf(num, den);

disp('连续时间系统 sysc:');
sysc

% 2. 设置采样时间
Ts = 0.1; % 采样时间为 0.1 秒

% 3. 使用默认方法 ('zoh') 进行离散化
sysd_default = c2d(sysc, Ts)
连续时间系统 sysc:
sysc = 

        1.0
-------------------
1.0s^2 + 0.5s + 1.0

Delay: 0.0

连续时间传递函数模型

sysd_default = 

  0.004913614996953086z + 0.004832374721149946
------------------------------------------------
1.0z^2 - 1.941483434782611z + 0.9512294245007142

Delay: 0.0

Sample Time: 0.1 (seconds)
离散时间传递函数模型
使用特定的离散化方法

使用特定的离散化方法,如 'foh'(一阶保持)、'tustin'(双线性变换/Tustin)、'impulse'(脉冲响应不变)等。

clc; clear; close all;

% 1. 创建一个连续时间系统
% 状态空间系统: 
A = [-0.5, 1; -1, -0.5];
B = [0; 1];
C = [1, 0];
D = 0;
sysc_ss = ss(A, B, C, D);

disp('连续时间状态空间系统 sysc:');
sysc_ss

% 2. 设置采样时间
Ts = 0.2; % 采样时间为 0.2 秒

sysd_method = c2d(sysc_ss, Ts, 'tustin')

输出:

连续时间状态空间系统 sysc:
sysc_ss = 

A = 
 -0.5   1.0
 -1.0  -0.5
B = 
 0.0
 1.0
C = 
 1.0  0.0
D = 
 0.0

连续时间状态空间模型

sysd_method = 

A = 
  0.8876404494382022  0.1797752808988764
 -0.1797752808988764  0.8876404494382022
B =
 0.017977528089887642
 0.18876404494382024
C =
 0.943820224719101  0.0898876404494382
D =
 0.008988764044943821

Sample Time: 0.2 (seconds)
离散时间状态空间模型

# 输入参数

sysc — 连续时间动态系统
动态系统模型

连续时间模型,指定为动态系统模型,如 tf、ss 或 zpk。sysc 不能是频率响应数据模型。sysc 可以是 SISO 或 MIMO 系统,除了 'matched' 离散化方法仅支持 SISO 系统。

sysc 可以具有输入/输出或内部时间延迟;但是,'matched'、'impulse' 和 'least-squares' 方法不支持具有内部时间延迟的状态空间模型。

以下识别线性系统不能直接离散化:

  • idgrey 模型,其 FunctionType 为 'c'。首先转换为 idss 模型;

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

Ts — 采样时间
正标量

采样时间,指定为正标量,表示所得离散时间系统的采样周期。Ts 以 TimeUnit 为单位,这是 sysc.TimeUnit 属性。

method — 离散化方法
'zoh'(默认)| 'foh' | 'impulse' | 'tustin' | 'matched' | 'least-squares'

离散化方法,指定为以下值之一:

  • 'zoh' — 零阶保持(默认)。假设控制输入在采样时间 Ts 内是分段常数;

  • 'foh' — 三角形近似(修改的一阶保持)。假设控制输入在采样时间 Ts 内是分段线性;

  • 'impulse' — 脉冲不变离散化;

  • 'tustin' — 双线性(Tustin)方法。要使用频率预畸变(以前称为 'prewarp' 方法)指定此方法,请使用 c2dOptions 的 PrewarpFrequency 选项;

  • 'matched' — 零极点匹配方法;

  • 'least-squares' — 最小二乘法;

  • 'damped' — 基于 TRBDF2 公式的阻尼 Tustin 近似,仅适用于稀疏模型。

opts — 离散化选项
c2dOptions 对象

离散化选项,指定为 c2dOptions 对象。例如,指定预畸变频率、Thiran 滤波器的阶数或作为选项的离散化方法。

# 输出参数

sysd — 离散时间模型
动态系统模型

作为与输入系统 sysc 类型相同的动态系统模型返回的离散时间模型。

当 sysc 是识别(IDLTI)模型时,sysd:

  • 包括 sysc 的测量和噪声分量。连续时间识别模型 sysc 的创新方差 ,存储在其 NoiseVariance 属性中,被解释为噪声谱密度的强度。sysd 中的噪声方差因此是

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

G — 状态空间模型的连续初始条件到离散时间初始状态向量的映射
矩阵

返回状态空间模型 sysc 的连续时间初始条件 到离散时间初始状态向量 的映射矩阵。初始条件到初始状态向量的映射如下:

对于具有时间延迟的状态空间模型,c2d 用零填充矩阵 G,以考虑由离散化这些延迟引入的附加状态。

# 另请参阅

d2c | d2d