具有预变形的双线性变换,适用于经典滤波器以外的系统

信息处理 双线性变换
2022-02-02 02:05:53

我似乎只能找到有关将双线性变换 + 预变形应用于过滤器(如巴特沃思等)的在线信息,只有一个边缘频率是故意“设计”到其中的。所以BT很容易应用,只需用通常的切线公式代替,包括边缘频率和采样频率。

但是,如果我的模拟有理传递函数描述了一个物理系统(如具有多个本征频率的弹性机械体,或电路网络)怎么办?那么我是否必须将BT分别应用于每个极点/零点?如果传递函数来自测量结果怎么办——我不知道极点/零点,因为我没有“设计”“滤波器”?这是否真的意味着我必须将它分解(我们知道它对错误很敏感)才能将其从模拟转换为数字?

PS,旁注:我将自己实现所涉及的数字(在 C# 中)。所以 Matlab 肯定是个好东西,但如果不是所有相关代码都公开可用,它对我没有帮助。

2个回答

双线性变换(“Tustin 方法”)确实主要用于变换频率选择滤波器,其幅度响应对于某些标准而言是最佳的,例如 Butterworth、Chebyshev 或 Cauer 滤波器。

对于更一般的系统,双线性变换通常不是最佳选择,因为频率翘曲主要影响接近 Nyquist 的频域行为。对于频率选择滤波器,截止频率可以预先扭曲,这样得到的离散时间系统的截止频率是正确的,但对于更一般的系统,通常不清楚哪些频率应该匹配,哪些应该匹配不。此外,对于具有近似分段恒定幅度响应的滤波器,只要正确映射截止频率,频率扭曲就不是大问题。对于一般系统,人们通常希望连续时间系统和离散时间系统之间的误差在频域中分布得更均匀,而双线性变换不可能做到这一点。

有几种方法可以将连续时间系统转换为离散时间系统。它们都有优点和缺点,这取决于应用程序首选哪一个。看看 Matlab 的c2d 函数,它实现了几种方法。还要看看这个问题及其答案。

为了近似测量响应,您将直接在离散时间域中设计相应的系统。对于一般的频率响应,频率采样方法非常简单有效。如果需要 IIR 近似值,可以使用Matlab 函数invfreqz 。它试图将有理传递函数拟合到给定的频率响应数据。

如果要转换物理系统传递函数,最“准确”的方法通常是使用“步进不变”方法进行转换,其中将零阶保持的效果添加到过程的拉普拉斯变换和您将其转换为 Z 域。它正确地模拟了 DAC 的零阶保持效应。

第二种行之有效的方法是在 s 域中设计您的控制器,并使用双线性变换在 z 域中对其进行转换。当您的采样率比开环带宽快 20 倍或更多时,它工作得很好。您还可以考虑使用 Padé 方法对零阶保持(以及所有其他延迟)进行建模,以获得更高的准确性。