滤波器设计方式分为IIR(递归滤波器)和FIR(非递归滤波器)两种。
IIR可以使用更少的阶数来实现与FIR相同的性能,在延迟方面,IIR在不同频率下的延迟不同,而FIR在每个频率的延迟一致,因此FIR滤波器不会改变输入信号的形状,只有相位的延迟,而IIR滤波器会使改变输入信号。滤波器阶数越高,延迟时间越长。
具体延迟时间在设计滤波器时就已确定,具体延迟时间Fdatool工具中Group delay Response图可以得到:
IIR在不同频率下的延迟不同;FIR在每个频率的延迟一致
以同样的3阶低通滤波器为例,可以看出,FIR滤波器在所有频率上具有相同的时延,而IIR滤波器的时延随频率而变化. 通常IIR滤波器中最大的时延出现在滤波器的截止频率附近。其中,横轴为频率,纵轴为多少个采样周期,例如,在5hz处,Group delay为3.67个采样周期,而此系统采样频率Fs为100hz,则延迟时间则为3.67*10ms=36.7ms。
IIR滤波器时间延迟曲线
FIR滤波器时间延迟曲线
通过相频曲线得到系统时间延迟:
下图是IIR滤波器的相频曲线
在没有延迟曲线的情况下,也可以根据系统的相频曲线大致估算出时间延迟情况,公式如下:
与延迟曲线中的36.7ms大体一致
使用设计的滤波器,使用100hz采样频率对5hz的正弦波进行采样并进行低通滤波,如下图所示,可以看出,滤波后的数据相对于原始数据延迟了30ms左右,由于分辨率原因,无法显示更高精度(100hz采样频率,时间间隔为0.01s,小数点后2位),这也同样印证了上面的时间延迟。
clear;
clc;
fs=100;N=100; %采样频率和数据点数
n=0:N-1;t=n/fs; %时间序列
x=sin(2*pi*5*t);
plot(t,x,'Color','r');
yfilter = filter(F10hz,x);
hold on;
plot(t,yfilter,'Color','b');