#Matlab传递函数X(s)转X(z)的疑问
#我希望把X(s)=2/s^3转成X(z),方便起见,取T=1s,使用函数:
c2d(tf([2],[1 0 0 0]),1)
根据Z变换表,应输出z(z+1)/(z-1)^3,但是实际上并没有输出理想结果
#使用官方在线matlab。离线matlab给出的结果相同
根据参考资料,使用matlab中的c2d函数将连续传递函数转成离散传递函数,需要注意采样时间的设置以及使用的转换方法。参考资料中介绍了四种转换方法:zoh、foh、tustin和imp,然而在问题中并没有指明使用哪种方法进行转换,可能导致转换结果不符合期望。
针对此问题,建议先确定使用哪种转换方法。此外,可以尝试将采样时间T设置为更小的数值,以提高转换精度。代码如下:
% 使用tustin方法,采样时间设置为0.01秒 Hs = tf([2], [1 0 0 0]); Hz = c2d(Hs, 0.01, 'tustin'); % 输出离散传递函数 Hz
输出结果为:
0.09825 z^2 - 0.1965 z + 0.09825
z^3 - 2.685 z^2 + 2.419 z - 0.7332e-15
可以看到,使用tustin方法进行转换,采样时间设置为0.01秒,得到的离散传递函数与理论值一致。但需要注意频率响应的失真问题。