本文将介绍几种将s域传递函数变为z域传递函数的方法。值得注意的是不要将这些方法与z变换混淆!
z变换是将离散数列变换到z域,有以下两种定义
- 时域输入输出微分方程→采样→离散域数列→对每一个数依次乘以一个延时系数并相加→z域传递函数
- 时域输入输出微分方程→采样→离散域数列→对每一个数依次乘以一个冲激函数并相加→脉冲函数→拉氏变换→s域传递函数→定义→z域传递函数
而本文的方法只是z变换第二种方法的其中一个步骤(↑↑↑上面加下划线部分)的几种实现方法,详细的说就是如何在保证输出输出关系不变的前提下用z把s替换掉。
1 差分方法: 思路是既然s传递函数可以表现输入输出微分方程。对应的z传递函数应该可以表现采样后的差分方程。分为前向差分和后向差分。
1.1前向差分:对一个连续函数的微分可以做以下近似。 等式①
利用上式,可以对的再微分,。
以此类推可以将任意阶的微分方程变为差分方程。
对于等式①的左右两端,我们分别进行拉氏变换和z变换,就可以得到如下的mapping
等式②
所以我们可以利用 将s用z替换,传递函数就从s域近似到了z域。
1.2后向差分:与前向差分类似只不过方向变了而已。即。 替换公式为 其实后向差分更符合实际,因为实际中你只能根据之前的状态推导之后的状态。
2 零极点配对方法
blablabla
3 Bilinear变换方法
Bilinear方法源于z变换的第二种定义。
将其进行一阶近似:,利用此公式将s用z替换,传递函数就从s域近似到了z域。
对于Bilinear方法我们来进行频率响应分析:
1 用bilinear将模拟控制器转化为数字控制器
。
2 根据z变换的第二种定义,将z用ω替换,得到
。
当频率为时,
所以z域传递函数在0到的频率响应与s域传递函数整个正半轴的频率响应相似。换句话说,z域上区间的频率响应可以反映整个s域频率响应。这说明没有混叠,但频率响应有wraping现象。
频率在离散滤波器上的频率响应相当于频率在模拟滤波器上的频率响应。
所以。如果采样周期足够小,则,wraping可以忽略。
现实中,针对某一频率可以通过调节c的值来抵消wraping。
比如令。
将c取值为 即可。
Matlab中bilinear变换的命令为
gd=c2d(g,tc,’tustin’)%g为模拟传递函数,tc为采样周期
gd=c2d(g,tc,’prewarp’,w)%w为指定的进行prewarping的频率
《[控制]将s域传递函数变为z域传递函数的方法》有1个想法