云深之无迹
纵是相见,亦如不见,潇湘泪雨,执念何苦。
1677篇原创内容
公众号
滤波器通过改变信号中不同频率成分的“强度”与“相位”,来保留有用信息、抑制或去除不需要的部分。
大体来说:滤波器 ≈ 频率选择器:
在信号里面有俩类:
我们可以互相组合出6种:
滤波器类型 | 通俗解释 |
---|---|
低通滤波器 | 保留慢变化,去除噪声 |
高通滤波器 | 保留快变化,去除趋势 |
带通滤波器 | 保留特定频率 |
带阻滤波器 | 削弱某段频率(如工频) |
一个信号 的傅里叶变换是 ,滤波器频率响应是 ,那么输出信号频谱是:
也就是说:
滤波器把输入信号在每一个频率上的强度乘以一个“权重函数” 。
这里出现新知识,频率响应
频率响应表示一个线性时不变(LTI)系统对不同频率输入的“反应强度和相位”。
定义(连续时间):
即系统对单位复指数输入 的稳态输出:
部分 | 含义 | 解释 |
---|---|---|
幅度谱 | 输入波形 输出强度变成多少倍 | |
相位谱 | 信号在该频率的相位偏移 |
以一般复函数 为例:
滤波器的两个图是使用的复函数绘制的
Bode图
幅度响应(Magnitude Response)
表示系统对频率为 的输入正弦波 输出强度变成多少倍;
如果 :该频率被放大;如果 :该频率被削弱(衰减);
通常画成 Bode 幅度图,单位常用 dB(分贝):
单位:
相位响应(Phase Response)
该频率信号经过系统后,其相位被延迟或超前了多少角度;常常画成 角度 vs 频率图,单位为弧度或度(°);和群延迟、系统因果性、相位失真密切相关;
例如低通滤波器常引起高频分量相位延迟更多(非线性相位):
比如一阶 RC 低通滤波器
幅度响应:
相位响应:
高频越大 ⇒ 衰减越多,延迟越大,看最后的公式
对任意输入 ,其傅里叶变换为 ,则输出:
滤波器对频率做乘法处理 ⇒ 强的频率放大,弱的压制。
假设一个理想低通滤波器:
其幅度谱是一个矩形,输出频谱 = 输入频谱在 以内保留,其余被滤掉。
一般说理想就是不需要的频率马上就截断,但是说现实不是,我们使用功率来表征,就是下降到原功率一半,3db的时候就认为是带宽了
滤波器的单位脉冲响应为 ,输入信号为 ,则输出为:
滤波器“滑动”在信号上,对每一点进行加权平均或加权差分处理。
高频去除
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import butter, filtfilt
fs = 1000 # 采样率
t = np.linspace(0, 1, fs, endpoint=False)
x = np.sin(2*np.pi*5*t) + 0.5*np.sin(2*np.pi*100*t) # 5Hz信号 + 100Hz噪声
# 构建一个低通滤波器,截止频率 30Hz
b, a = butter(N=4, Wn=30, fs=fs, btype='low')
y = filtfilt(b, a, x)
plt.plot(t, x, label='原始信号')
plt.plot(t, y, label='滤波后信号', linewidth=2)
plt.title("低通滤波器作用:去除高频噪声")
plt.legend()
plt.grid(True)
plt.show()