预测和负延迟滤波器:你应该知道的五件事
扫描二维码
随时随地手机看文章
所有系统,包括滤波器,都是因果关系。这意味着它们不能在激励源激励之前对激励(不可预知)做出任何反应。那么,又该如何设计一款可“预测”的滤波器呢?好吧,这一切都取决于你对品质的期待有多高以及这一预测的相关性。
那么,我们再次祭起曾非常流行的“五件你应该知道的事”这一招式之旗,我们提出五个核心问题,其答案可以帮助我们绕过这个“滤波器”陷阱。
滤波器如何延缓信号?
信息可以通过多种方式加载于信号,它总是需要一段限定的时间来通过处理系统。你可能很熟悉数字模块的传输延迟概念。延迟,就是在输入发生某些状态变化到输出发生相应状态变化这段时间差。有数字概念的读者首先想到的可能是一个‘1’和‘0’的码流,以作为不同电压或电流水平的物理表述。对于这样的信号,传输延迟没有害处;但当我们考虑到模拟信号(实际上,没有确定的特性对应特定的时间点)时,就不是那么简单了。
我们经常对信号和数据序列进行低通滤波以消除“噪声”--高频率变异,我们已确定其没有任何意义,且它还是我们要观察的更重要的基本频点的障碍。虽然滤波过程对我们的观察影响巨大,但它绝对是一个影响观察的案例。当我们查看响应图形时,传统滤波方式最明显的后果是,在输入信号的变化和滤波后输出的相应变化之间有明确的时间延迟。当我们看一些例子时,我们将在某一时刻借助测试信号清楚地看到这点。
我们如何量化这种形式的延迟?
滤波器(或任何其它线性信号处理模块)输入信号和相应输出之间的这种“滞后”,
与组延迟紧密相关,组延迟相当于(或略低于)相位响应与派生频率。为此应选用明智的单位;如果你用弧度测量相位,以其每秒弧度的角形式表达频率,那么,(弧度)除以(弧度每秒),你就可得到以秒表示的答案。或者你可以使用“周期”—— 一个周期,是一个完整旋环,或360度。相位差以周期表示,除以赫兹(与每秒的周期数相同)表示的常规频率差,也会给出以秒表述的答案。
我们可能忍不住要问:如果要避免这种滞后,为什么不设计一款没有任何组延迟的滤波器?如果你以前读过我的专栏,你可能会认识到这句话中的“危险成分”。因为,你猜对了——它并非这么容易。如果你查找或计算“标准”的低通滤波器响应,你会发现,他们的组延时是总是正向的,一直降到零频率。这里,我们需要来点别出心裁。
我们可以消除(或者不仅仅是消除)这种延迟吗?
如果你想让延迟在任一频率都为零,那严格的答案是‘不能‘。但确实有种技术可用以开发补偿滤波器,当其与原来的滤波器级联时,可以给你零延迟;当DC时,甚至是负的组延迟。正如我们将看到的,这可能非常有用。你不需要进行任何试错——现在,可将麻烦扼杀在未发。
比方说,某种低通传递函数H,它们在DC时有整体增益。可以容易地论证:新传递函数H’ = 2-H,在DC时也是整体增益,且在DC时的组延迟具有与H相同的
幅值,但却是负值。如果你级联H和H‘(即串联它们),你会得到一个整体传递函数,我们称其为H1,它具有DC整体增益和DC零组延时。对于S或Z域的任何线性传递函数来说,H1就等于HH’,即H1 = H(2-H)。无论哪类滤波器,只要H是可实现的,这也就可以实现。
这看起来似乎很怪诞。因为函数H‘与H的阶相同(无论使用模拟或数字滤波器),你可以看到,将其组合起来会使滤波器的尺寸加倍,因此实现其所需的资源也要加倍。也许不太容易想象的是,它可能会大大降低滤波器的衰减性能。如果H是一个具有DC整体增益的低通函数,而在所有其它频率也具有整体增益(或小于整体增益),那么函数2-H就有一个会在1和3之间振荡的值,也就是说,它可以在响应中引入一个高达9.5dB的“凸点”。如果该凸点落于整体滤波器的阻带内,那么所发生的一切就只是衰减功能的恶化。如果凸点落在通带内,那么该级联的整个通带内的响应会与单个H时的大相径庭。
这里有个简单例子。对以100kps采样率数字方式实现的H,在10kHz时,以n=2的巴特沃斯滤波器开始。为了设计滤波器并获得图表,我使用了新版(2012年2月发布)的PSoC Creator滤波器工具,它为H给出了以下系数,幅度和组延时曲线在图1表示。
双二阶滤波器的最终系数:
系数序列为A0,A1,A2,B1和B2
0.0674552917480469
0.134910583496094
0.0674552917480469
-1.14298057556152
0.412801742553711
图1:0.01 Fs时,N=2的巴特沃斯滤波器的幅度和组延时。
补偿滤波器H’与H同分母,而分子等于两个负数(H的分子)。我用快速电子表格进行了计算,并将结果反馈给PSoC Creator滤波器工具。工具为这两个双二阶部分给出了最好的排序和增益;它获得了4dB增益,以确保凸点响应不高于0dB,见图2:
双二阶滤波器的最终系数:
系数序列为:A0,A1,A2,B1和B2
0.216065168380737
-0.2706618309021
0.0847635269165039
-1.14298057556152
0.412801742553711
0.372884273529053
0.745768547058105
0.372884273529053
-1.14298057556152
0.412801742553711
图2:带补偿滤波器的N=2巴特沃斯级联;零DC组延迟
在通带内,频率响应明显是非平坦(内有凹凸)的,而且已经放弃了一些相对阻带抑制。如果你熟悉控制系统理论,你马上会看到,我们得到的是增加的传递函数零,其组延时的贡献准确取消了原始的滤波器极点(以及新极点也会出现)。但它并非太过糟糕的一个响应——它仍能去掉数据序列的高频率噪声——如图3所示,某些神秘数据(哇!):
图3:某些数据(蓝色),巴特沃斯响应(粉红色)和补偿(绿色)
我们不必使用相同的函数H来构造补偿滤波器。如果两个传递函数HA和HB都具有整体单位DC增益和相同的DC组延迟值,则H1 =HA(2-HB)也有整体DC增益和零DC组延迟。
特别是,如果HB是T值的纯时间延迟(相等于HA的DC组延迟),我们可以得到FIR实现的漂亮简化。就T恰好等于N个采样周期的传递函数来说,我们得到H1 = HA(2-Z^- N),几乎所有的数字滤波器结构都能很容易地实现它,因为Z图的
这些负值直接作用于单位采样延迟。而2N+1阶的对称FIR滤波器总能满足该条件;如果多做点工作,它就可以适应不对称的情况,其中N不是整数。
因此,无论我们选择工作在S域或Z域,我们都可以构建零DC组延时的低通传递函数。但我们没必要在零组延时停止;虽然我们可以很容易地使其为负,我们也在此进入预测域。在采样系统中,有一个其输出是输入信号在下一个采样时刻可以预测的滤波器,会很方便。换句话说,一个滤波器的DC组延迟是负一个采样周期。在上面提到的FIR的情况,它简单得几乎难以置信。我们只须使用2-z^-(N+1),而不是2-z^-N的补偿函数。
现在,如果在有能量进入滤波器之前,它就实际输出了一些能量,那就破坏了因果律。所以包含信息的任何信号不可能以负延迟的形式出现在输出。但有些信号不包含任何信息——如果一些观察家对其有心理上的期盼,则无论他们怎么想
——所以当组延迟为负时,就没有因果关系可去违反。
这种滤波器的表现如何?
这些功能有个有用的属性。显然,对常数(即DC)输入,输出电压等于输入,与普通低通滤波器的一样。但现在当输入以恒定速率变化时,输出也可以等于输入。与“标准”低通传输函数不同,在阶梯变化激励下,滤波器的输出和输入信号间没有“滞后”。我们设计另外一个例子,并更加仔细地检验其属性。
这次,我们以FIR为例。我们HA的起始滤波器是一个对称的9阶FIR滤波器,(因此有4个采样周期的恒定组延迟)。这是为陷波60Hz左右有不小变化的AC线频而设计的。我会解释理由,且在以后的Filter Wizard中,明确如何设计这样一款“拨空号(dial-a-null)”滤波器,但眼下,我们只是看一看。对于我们的HB,为得到零延迟滤波器,我们使用了4个采样周期的简单延迟。这使2-HB看起来像一个系数为(2,0,0,0,-1)的5阶FIR滤波器。级联的HAHB做成一款单一FIR滤波器,将两个Z平面序列卷积在一起,获得一个13阶的滤波器。HA和HAHB的幅度和组延时如图4所示,这次是用LTspice仿真的。图中,有相当奇怪的频率和时间,是因为这个滤波器是按工作在220个采样/每秒设计的。再次,我们得到一个凹凸不平的通带并失去了一些阻带响应。
现在,我们可以进入预测领域。如果我们把HB‘的延迟设为5个采样周期而不是4个,然后重新计算该级联(现在是14个阶递),我们得到的HAHB如图4(绿色线段)所示。与期望的一样,现在,你可以看到DC组延迟是负4.5ms左右。
图4:FIR例子,正延迟和负一个采样周期的情况
那么这里回报是什么?好,我们看看时间域的行为。三个滤波器的激励源都是上升又下降的三角形信号。激励和响应如图5所示。
图5:无补偿和有补偿FIR滤波器对三角波激励的响应
由最初的低通滤波器HA引起的“滞后”显而易见。如果你试图检测信号通过某些极限点的哪个点,你会清楚地体验到在检测响应时的延迟。HAHB线段显示我们零DC组延迟滤波器的输出——它具有零延迟!这突显了对于一般低通滤波器来说极为重要的一个事实:这种滤波器的输出和输入之间的斜坡滞后在数值上等于DC组延迟值。因此,如果我们补偿滤波器的设计,使DC组延迟为零,我们就得以消除滞后。当然,代价总是有的,我们可以看到,在输入波形斜坡发生突变后,这种滤波器有些疲于应付。
如果你放大HAHB曲线,你会看到,每个新采样都正好在输入斜坡曲线上。预测版本HAHB的输出值移动到斜坡将在下一个采样周期开始时该有的那个值,我猜,会与我们预测的一样。
这种滤波器可在哪里派上用场?
有许多工业监测应用,其“正常”行为意味着信号稳定(但嘈杂,信号可以是温度、压力、物理结构内的应力等)。 所谓“异常”行为,是指一些被测的系统参数变得不可控,并不按规矩“出牌”。
在反馈路径需要滤波的控制系统,这种零延迟类型的滤波器很有用。消除很低频率下的组延时,可以显著增加抑制这些频率上某些感知行为的控制回路的功效。工程师习惯于操控系统传递函数的零以强迫实施所需的回路行为,这正是我们在此以更具分析的意蕴所做的。我们的传递函数算法生成取消极点DC组延迟特性的零。我已经说过,不是吗!
这种零或负延迟滤波器通常还用来处理非电子信号。例如,如果一种金融工具(如股票)的价格被认为呈斜坡线性变化,但该斜坡被短期交易噪声破坏,零延迟滤波器就可用于有效地提取基本行为。虽然,如图5所示,当三角形改变方向时,你可以从滤波器的行为进行推断,但一段时间内,这种滤波器会给出极不准确的结果,直到价格行为再次按平稳的斜坡变化。图3的神秘数据,事实上是个股票价值序列。
这些金融工具的交易员实际上对其价格数据序列使用了一些相当复杂的滤波流程。我常常被告知,若电子市场股价暴跌,在金融部门,滤波器向导肯定会有份工作,用来从巨大的价格数据集中梳理出有趣信号。但让我们绕过暗礁险滩,戴上安全的坚固工程的护身符,并重回正轨!
诸如此类的延迟操控可以大有作为的一个工程应用是补偿数字D类放大器的电源电压变化。对于给定的分度:间隙因数由输出开关输出,其放大器的平均输出电压与电源电压成正比——即,它没有电源抑制。当人们似乎不想在消费类音频设备的电源上下大本钱的时候,这并非好事。
我们可以测量瞬时的电源电压,并将其回馈到开关控制算法中。但由于滤波器延迟与测量此类放大器的电源电压相关,并将数据回馈至控制系统,所以,你最终纠错的并非此时此地的电源电压,而是前一段时间的电源电压。这种差异限制了我们可以用这种回路实现电源抑制。如果我们采用有适当的DC负组延时的低通滤波器滤除所测量的电源电压(并不过分强调出现的高频噪声),我们就可以弥补这种效果(至少在相对的极低频如此,如AC线频的谐波频率)。这种技术可以对数字功率放大器AC线的纹波抑制产生重大影响,在一些商业数字放大器设计中就采用了该方法。
更多资讯请关注:21ic模拟频道