Matlab c2d 函数提供与 Z 变换表不同的输出



c2d 用于将模型从连续时间转换为离散时间。官方文件指出:

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

为什么当我这样做时:

>> s = tf('s')
>> c2d(1/s, 1)

我得到:

ans =
1
-----
z - 1
Sample time: 1 seconds
Discrete-time transfer function.

但根据 Z 变换表,1/s的 z 变换是

ans =
z
-----
z - 1

为什么会有这种差异?

你混淆了两个不同的概念:

  1. 连续步长函数 u(t( 的拉普拉斯变换为1/s
  2. 离散阶跃函数 u(n( 的 z 变换为z / (z-1)

请注意,连续步进函数 u(t( 与离散步进函数 u(n( 不同。后者仅在实例 t = n*T 通过采样时定义。

由于拉普拉斯域用于连续信号,z域用于离散信号,因此两者之间没有1对1或精确的转换。只有近似的转换来解释采样作用对连续信号的影响。这就是为什么c2d命令必须使用各种近似方法,零阶保持(zoh(是默认方法。

脉冲不变近似方法将给出您正在寻找的结果,因为它经过优化以"生成与连续时间系统具有相同脉冲响应的离散时间模型"。

>> s = tf('s');
>> T = 1;
>> c2d(1/s, T, 'impulse')
ans =
z
-----
z - 1

有关更多详细信息,请参阅相关文档。

c2d(1/s, T, 'impulse'( 只给出了 T=1 的正确答案。对于 T 而不是 1,结果为 T*z/(z-1(。我忽略了原因。

相关内容

  • 没有找到相关文章

最新更新