一、在matlab输入fdatool,打开滤波器设计窗口,指定滤波器、Specify order(设定阶数)、Fs(采样率)、Fpass(通带)、Fstop(阻带),观察滤波器效果。
二、使用python进行滤波
FIR Equiripple滤波器设计
from scipy import signal
fs = 130520000.0 # Sample rate, Hz
cutoff = 1200000.0 # Desired cutoff frequency, Hz
trans_width = 200000 # Width of transition from pass band to stop band, Hz
numtaps = 1500 # Size of the FIR filter.
taps = signal.remez(numtaps, [0, cutoff, cutoff + trans_width, 0.5*fs], [1, 0], Hz=fs)
data_fir = signal.lfilter(taps, 1, data)
注意:
1、如果采样率和通带频率相差太大,则需要的阶数会很大,消耗资源增加,可以通过抽取降低采样率来降低阶数。
2、signal.lfilter的输入参数为(b,a,x),b为滤波器分子系数,a为滤波器分母系数,Equiripple滤波器输出只有一个,所以a设置为1.
参考:
滤波器设计
lfilter输入解析