主要内容

反因果,零阶段过滤器实现

在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秒持续时间信号,由3 Hz和40 Hz的两个正弦分量组成,是

FS = 100;t = 0:1 / FS:1;X = SIN(2 * PI * T * 3)+。25 * SIN(2 * PI * T * 40);

现在创建一个6阶Butterworth低通滤波器以滤除高频正弦曲线。筛选X使用两者筛选filtfilt.进行比较:

[B,A] =黄油(6,20 /(FS / 2));y = filtfilt(b,a,x);yy =过滤器(b,a,x);图(t,x,t,y,t,YY)传奇('原来的''filtfilt''筛选'

图包含轴。轴包含3个类型的线。这些对象代表原始,filtfilt过滤器。

两个过滤版本都消除了原始信号中的40 Hz正弦曲线。这个曲线也展示了如何筛选filtfilt.不同。这filtfilt.线与原来的3 Hz正弦曲线相位,而且筛选线被延迟。这筛选线在早期显示瞬态。filtfilt.通过仔细选择初始条件来减少过滤器启动瞬变,并通过预先输入输入序列,输入序列的简短反射序列。

为获得最佳效果,请确保您过滤的序列具有至少三倍的过滤器顺序,在两个边缘上逐渐变为零。

也可以看看

||