前言:我是一名博士生,对许多信号处理和工程概念相当缺乏经验,请温柔。
我试图从 2.4GHz CSI 幅度信号中滤除 1Hz 到 2Hz 的频率范围,但是在应用巴特沃斯带通滤波器后,我观察到信号开始处有一个大尖峰。如果我从信号中删除前 100 个左右的样本,这对尖峰没有影响。我已经尝试使用 Python(使用 scipy 的 lfilter)和 MATLAB(使用黄油和过滤器)进行此操作,并且在两者中都观察到了相同的行为。我知道这些过滤方法有多种变体,但是也许我不明白应该使用哪一种。我正在尝试复制这项工作。
该信号由大约 60 个 OFDM 子载波组成,这些子载波都绘制在我的示例中。
在哪里:
- 对接 = 2
- fcutlow = 1
- fcuthigh = 2
- Fs = 9.7
MATLAB:
[b, a] = butter(buttOrd, [fcutlow fcuthigh]/(Fs/2), "bandpass");
filterSig = filter(b, a, signal);
Python:
b, a = signal.butter(buttOrd, [fcutlow/(Fs/2), fcuthigh/(Fs/2)], "bandpass")
filterSig = signal.lfilter(b, a, signal)
上图:未过滤的信号。
上图:过滤后的信号。
通过将给定带通滤波器的范围减小到更小,例如 1Hz-1.01Hz,可以观察到更小、一致的信号。我理解为什么较小的范围会产生不同的响应,但我不明白我观察到的具体行为。

