c2d
将模型从连续时间转换为离散时间
说明
示例
离散化传递函数
将以下连续时间传递函数离散化:
此系统的输入延迟为 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 = 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
有三个采样周期的延迟。离散化算法将残差半周期延迟纳入 hd
的系数中。
比较连续时间模型和离散化模型的阶跃响应。
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.
使用突斯汀离散化方法和蒂兰滤波器对模型进行离散化,以对小数延迟进行建模。采样时间 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.
离散化模型现在包含对应于三阶 Thiran 滤波器的三个附加状态 x3
、x4
和 x5
。由于时滞除以采样时间为 2.7,因此三阶 Thiran 滤波器 ('FractDelayApproxOrder'
= 3) 可以逼近整个时滞。
离散化辨识的模型
估计连续时间传递函数,并将其离散化。
load iddata1 sys1c = tfest(z1,2); sys1d = c2d(sys1c,0.1,'zoh');
估计二阶离散时间传递函数。
sys2d = tfest(z1,2,'Ts',0.1);
比较离散化连续时间传递函数模型 sys1d
和直接估计的离散时间模型 sys2d
的响应。
compare(z1,sys1d,sys2d)
这两个系统几乎完全相同。
构建预测器模型
对一个辨识的状态空间模型进行离散化,以构建其响应的向前一步预测器。
使用估计数据创建一个辨识的连续时间状态空间模型。
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
的超前 1 步预测响应。
仿真预测器模型以获得与 predict
命令相同的响应。
lsim(Predictor,[z2.y,z2.u])
预测器模型的仿真给出与 predict(sysc,z2)
相同的响应。
输入参数
sysc
— 连续时间动态系统
动态系统模型
Ts
— 采样时间
正标量
采样时间,指定为正标量,表示生成的离散时间系统的采样周期。Ts
以 TimeUnit
为单位,后者是 sysc.TimeUnit
属性。
method
— 离散化方法
'zoh'
(默认) | 'foh'
| 'impulse'
| 'tustin'
| 'matched'
| 'least-squares'
离散化方法,指定为以下值之一:
'zoh'
- 零阶保持(默认值)。假定控制输入在采样时间周期Ts
内是分段常量。'foh'
- 三角形逼近(修正一阶保持)。假定控制输入在采样时间周期Ts
内是分段线性值。'impulse'
- 冲激不变离散化'tustin'
- 双线性(突斯汀)方法。要使用频率预修正指定此方法(以前称为'prewarp'
方法),请使用c2dOptions
的PrewarpFrequency
选项。'matched'
- 零极点匹配法'least-squares'
- 最小二乘法'damped'
- 仅基于稀疏模型的TRBDF2
公式的阻尼突斯汀逼近。
有关每种转换方法的算法的信息,请参阅Continuous-Discrete Conversion Methods。
opts
— 离散化选项
c2dOptions
对象
离散化选项,指定为 c2dOptions
对象。例如,将预修正频率、Thiran 滤波器的阶数或离散化方法指定为选项。
输出参量
sysd
— 离散时间模型
动态系统模型
离散时间模型,以与输入系统 sysc
相同类型的动态系统模型形式返回。
当 sysc
是辨识的 (IDLTI) 模型 sysd
时:
同时包括
sysc
的测量组件和噪声。连续时间辨识模型sysc
的新信息方差 λ,存储在其NoiseVariance
属性中,解释为噪声频谱的频谱密度的强度。因此sysd
中的噪声方差为 λ/Ts。不包括
sysc
的估计参数协方差。如果要在离散化模型时转换协方差,请使用translatecov
。
G
— 状态空间模型的连续初始条件到离散时间初始状态向量的映射
矩阵
状态空间模型 sysc
的连续时间初始条件 x0 和 u0 到离散时间初始状态向量 x[0] 的映射,以矩阵形式返回。初始条件到初始状态向量的映射如下:
对于具有时滞的状态空间模型,c2d
用零填充矩阵 G
以考虑离散化这些延迟所引入的额外状态。有关离散化系统中时滞建模的讨论,请参阅Continuous-Discrete Conversion Methods。
版本历史记录
在 R2006a 之前推出
另请参阅
c2dOptions
| d2c
| d2d
| thiran
| translatecov
(System Identification Toolbox) | 转换模型速率
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)