文档

反因果,零相位滤波器的实现

在FIR滤波器的情况下,可以设计线性相位滤波器,当应用到数据(使用过滤器conv),只需将输出延迟固定数量的样本。然而,对于IIR滤波器,相位失真通常是高度非线性的。的filtfilt函数利用信号中当前点前后点的信息,本质上是“展望未来”,以消除相位失真。

来看看filtfilt还记得吗,如果一个实序列的z变换 x n X z ,然后是时间反转序列的z变换 x - n X z - 1 .考虑以下处理方案:

| z | 1 ,这是 z e j ω ,产量减少为 X e j ω | H e j ω | 2 .给定序列的所有样本 x n 的双重过滤版本 x 零相位畸变是可能的。

例如,一个在100hz采样的1秒持续时间的信号,由两个3hz和40hz的正弦分量组成,为

fs = 100;t = 0:1 / fs: 1;x =罪(2 *π* t * 3) + .25 *罪(2 *π* t * 40);

现在创建一个六阶巴特沃斯低通滤波器来过滤掉高频正弦信号。过滤器x使用这两种过滤器filtfilt比较:

[b] =黄油(6,20 / (fs / 2));y = filtfilt (b, a, x);yy =过滤器(b, a, x);情节(t t, x,, y, t, yy)传说(“原始”“filtfilt”“过滤”

两种滤波版本都消除了原始信号中明显的40hz正弦信号。情节也展示了如何做到这一点过滤器filtfilt是不同的。的filtfilt线与原始的3hz正弦波相位一致,而过滤器线是延迟。的过滤器线表示早期的瞬变。filtfilt通过仔细选择初始条件,并在输入序列上预先设置一个短的、反射的输入序列片段,可以减少滤波器启动瞬态。

为了获得最好的结果,确保你要过滤的序列长度至少是过滤顺序的三倍,并且在两边的锥形都为零。

另请参阅

||