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. Model Properties
在此示例中,离散化模型 hd
有三个采样周期的延迟。离散化算法将残差半周期延迟纳入 hd
的系数中。
比较连续时间模型和离散化模型的阶跃响应。
step(h,'--',hd,'-')
自 R2024a 起
创建具有两个状态和一个输入延迟的连续时间状态空间模型。
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. Model Properties
使用突斯汀离散化方法和蒂兰滤波器对模型进行离散化,以对小数延迟进行建模。采样时间 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. Model Properties
默认情况下,该函数将额外延迟建模为离散化模型中的内部延迟。要将额外延迟建模为离散化模型中的状态,请将 c2dOptions
的 DelayModeling
选项设置为 '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. Model Properties
离散化模型现在包含对应于三阶 Thiran 滤波器的三个附加状态 x3
、x4
和 x5
。由于时滞除以采样时间为 2.7,因此三阶 Thiran 滤波器 ('ThiranOrder'
= 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)
相同的响应。
输入参数
采样时间,指定为正标量,表示生成的离散时间系统的采样周期。Ts
以 TimeUnit
为单位,后者是 sysc.TimeUnit
属性。
离散化方法,指定为以下值之一:
'zoh'
- 零阶保持(默认值)。假定控制输入在采样时间周期Ts
内是分段常量。'foh'
- 三角形逼近(修正一阶保持)。假定控制输入在采样时间周期Ts
内是分段线性值。'impulse'
- 冲激不变离散化'tustin'
- 双线性(突斯汀)方法。要指定在此方法中使用频率预修正(以前称为'prewarp'
方法),请使用c2dOptions
的PrewarpFrequency
选项。'matched'
- 零极点匹配法'least-squares'
- 最小二乘法'damped'
- 仅基于sparss
模型的TRBDF2
公式的阻尼突斯汀逼近。
有关每种转换方法的算法的信息,请参阅Continuous-Discrete Conversion Methods。
离散化选项,指定为 c2dOptions
对象。例如,将预修正频率、Thiran 滤波器的阶数或离散化方法指定为选项。
输出参量
离散时间模型,以与输入系统 sysc
相同类型的动态系统模型形式返回。
当 sysc
是辨识的 (IDLTI) 模型时,sysd
:
同时包括
sysc
的测量组件和噪声。连续时间辨识模型sysc
的新信息方差 λ,存储在其NoiseVariance
属性中,解释为噪声频谱的频谱密度的强度。因此sysd
中的噪声方差为 λ/Ts。不包括
sysc
的估计参数协方差。如果要在离散化模型时转换协方差,请使用translatecov
。
状态空间模型 sysc
的连续时间初始条件 x0 和 u0 到离散时间初始状态向量 x[0] 的映射,以矩阵形式返回。初始条件到初始状态向量的映射如下:
对于具有时滞的状态空间模型,c2d
用零填充矩阵 G
以考虑离散化这些延迟所引入的额外状态。有关离散化系统中时滞建模的讨论,请参阅Continuous-Discrete Conversion Methods。
版本历史记录
在 R2006a 之前推出c2d
命令在对额外延迟进行建模时不再添加额外状态。默认情况下,c2d
现在使用内部延迟并返回具有相同状态数目的离散化模型。这会使行为更加可预测,并简化从连续时间到离散时间的初始状态映射。
要还原到 R2024a 之前的旧行为,请使用 c2dOptions
创建一个选项集并将 DelayModeling
设置为 "state"
。
您现在可以使用双线性突斯汀逼近方法离散化 mechss
模型。对于 mechss
模型,'tustin'
方法计算突斯汀离散化的二阶形式。这等效于将突斯汀应用于 sparss
模型的一阶 mechss
等效项。
您现在可以使用 c2d
离散化具有偏移量的模型,例如网格线性参数变化模型。
此外,c2dOptions
提供两个新选项
DelayModeling
- 指定是将额外延迟建模为内部延迟(默认值)还是附加状态。Consistency
- 在状态空间数组中强制实现状态和延迟一致性。在离散化网格 LPV 或 LTV 模型时,此选项很有帮助。
另请参阅
c2dOptions
| d2c
| d2d
| thiran
| translatecov
(System Identification Toolbox) | 转换模型速率
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- 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)