最近在处理信号时突然想到一个问题“先滤波再降采样 还是 先降采样再滤波”,这里学习并记录一下,方便以后查阅。
先滤波再降采样 还是 先降采样再滤波
- 先滤波再降采样 or 先降采样再滤波
- 方案 1:先带通滤波(0-50Hz),后降采样(500Hz到100Hz)
- 步骤
- 优点
- 缺点
- 方案 2:先降采样(500Hz到100Hz),后带通滤波(0-50Hz)
- 步骤
- 优点
- 缺点
- 两种方案的比较
- 结论
- 额外建议
- 香农采样定理(Shannon Sampling Theorem)
- 定义
- 数学表述
- 关键概念
- 通俗理解
- 举例说明
- 代码示例
- 运行结果
- 结果分析
- 实际应用
- 总结
- 混叠(Aliasing)详解
- 定义
- 原理
- 混叠的直观理解
- 混叠的数学推导
- 混叠的后果
- 如何避免混叠
- 实例解析
- 应用场景
- 总结
先滤波再降采样 or 先降采样再滤波
对于脑电信号处理,先滤波再降采样和先降采样再滤波两种方案各有优缺点,但总体来说,先滤波再降采样是更优的选择。
方案 1:先带通滤波(0-50Hz),后降采样(500Hz到100Hz)
步骤
- 对原始信号(500Hz采样率)进行带通滤波,保留 0-50Hz 的频率范围。
- 对滤波后的信号进行降采样,从500Hz降到100Hz。
优点
-
避免混叠(Aliasing):
- 在降采样前,通过带通滤波去除了50Hz以上的频率成分(即奈奎斯特频率100Hz以上的频率),避免了高频分量混入低频导致失真。
- 这是采样定理的要求,能够保证降采样后信号的真实性。
-
滤波器性能更高:
- 在高采样率(500Hz)下滤波,滤波器能够获得更高的频率分辨率,滤波效果更好,尤其在接近带宽边界时(例如50Hz)。
缺点
- 计算复杂度高:
- 在500Hz的高采样率下进行滤波,处理的样本数量较多,增加了计算量。
方案 2:先降采样(500Hz到100Hz),后带通滤波(0-50Hz)
步骤
- 对信号直接降采样,从500Hz降到100Hz。
- 对降采样后的信号进行带通滤波,保留 0-50Hz 的频率范围。
优点
- 计算效率高:
- 降采样后信号的采样率降低,数据点数减少,滤波的计算量大幅降低,适合计算资源有限的场景。
缺点
-
可能产生混叠(Aliasing):
- 如果信号中包含50Hz以上的高频成分,降采样时这些高频分量会混叠到低频范围,导致信号失真。
- 即使后续滤波,也无法完全去除混叠,因为混叠是不可逆的。
-
滤波效果可能较差:
- 降采样后,频率分辨率降低,滤波器在100Hz采样率下工作时的频率带宽较窄,可能无法精确地去除边界频率(如50Hz附近)的噪声。
两种方案的比较
比较维度 | 方案 1:先滤波后降采样 | 方案 2:先降采样后滤波 |
---|---|---|
混叠问题 | 完全避免混叠,信号保真度更高 | 降采样前未滤波,可能导致混叠,信号失真 |
计算效率 | 较低,在高采样率下处理数据,计算量大 | 较高,降采样后数据量少,滤波计算量小 |
滤波效果 | 滤波精度高,高采样率提供更好的频率分辨率 | 滤波精度低,低采样率限制了滤波器的性能 |
适用场景 | 数据分析优先,注重信号质量;适合高精度分析任务 | 实时处理优先,注重计算效率;适合资源受限场景 |
结论
-
推荐方案 1(先滤波后降采样):
- 对于大多数脑电信号分析任务(如离线分析、研究用),信号质量优先,推荐先进行带通滤波以去除高频分量,再降采样,以避免混叠和保留信号真实性。
-
方案 2(先降采样后滤波)的适用情况:
- 如果实时处理的计算效率是首要考虑(如实时脑机接口应用),且降采样后的奈奎斯特频率已经远高于信号的带宽(例如信号本身频率远低于50Hz),可以考虑此方案。
额外建议
- 如果选择方案 2,在降采样前建议增加一个简单的抗混叠滤波器(如低通滤波器,截止频率设为50Hz),以尽量减轻混叠的影响。
- 可以利用
MNE
等工具中提供的高效滤波和降采样函数,结合工具的抗混叠机制,进一步优化信号处理流程。
香农采样定理(Shannon Sampling Theorem)
定义
香农采样定理,也称为 奈奎斯特-香农采样定理(Nyquist-Shannon Sampling Theorem),是数字信号处理的基础理论。它指出:
如果一个信号的最高频率为 f max f_{\text{max}} fmax,则以大于或等于 2 f max 2f_{\text{max}} 2fmax 的采样率对该信号进行采样,可以完全恢复原始信号。
数学表述
- 设连续时间信号 x ( t ) x(t) x(t) 的带宽(最高频率)为 f max f_{\text{max}} fmax,即 X ( f ) X(f) X(f) 在 [ − f max , f max ] [-f_{\text{max}}, f_{\text{max}}] [−fmax,fmax] 范围内有值,其他频率范围为零。
- 如果采样频率 f s ≥ 2 f max f_s \geq 2f_{\text{max}} fs≥2fmax,则通过采样点 x [ n ] = x ( n T s ) x[n] = x(nT_s) x[n]=x(nTs) (其中 T s = 1 f s T_s = \frac{1}{f_s} Ts=fs1 为采样周期)可以唯一确定 x ( t ) x(t) x(t)。
关键概念
-
奈奎斯特频率(Nyquist Frequency):
- 奈奎斯特频率为信号的最高频率 f max f_{\text{max}} fmax 的两倍:
f s ≥ 2 f max f_s \geq 2f_{\text{max}} fs≥2fmax - 如果采样率小于奈奎斯特频率,则会发生混叠现象(aliasing)。
- 奈奎斯特频率为信号的最高频率 f max f_{\text{max}} fmax 的两倍:
-
混叠现象(Aliasing):
- 当采样频率 f s < 2 f max f_s < 2f_{\text{max}} fs<2fmax 时,高频信号会被误认为是低频信号,从而导致信号失真,无法准确重建。
-
重建公式:
- 在满足采样定理的条件下,原信号可以通过采样点 x [ n ] x[n] x[n] 由下面的公式完全重建:
x ( t ) = ∑ n = − ∞ ∞ x [ n ] sinc ( t − n T s T s ) x(t) = \sum_{n=-\infty}^{\infty} x[n] \text{sinc}\left(\frac{t - nT_s}{T_s}\right) x(t)=n=−∞∑∞x[n]sinc(Tst−nTs)
其中, sinc ( x ) = sin ( π x ) π x \text{sinc}(x) = \frac{\sin(\pi x)}{\pi x} sinc(x)=πxsin(πx)。
- 在满足采样定理的条件下,原信号可以通过采样点 x [ n ] x[n] x[n] 由下面的公式完全重建:
通俗理解
-
信号的带宽限制:
- 一个信号的最高频率决定了它的带宽。例如,语音信号的频率通常低于 4kHz,因此它的带宽为 4kHz。
-
采样频率的选择:
- 根据香农采样定理,采样频率至少需要是最高频率的两倍。比如:
- 如果语音的最高频率为 4kHz,则采样频率 f s ≥ 8 f_s \geq 8 fs≥8kHz。
- 根据香农采样定理,采样频率至少需要是最高频率的两倍。比如:
-
实际应用:
- 在音频处理领域,CD 音质的采样率为 44.1kHz,远高于人耳可听的最高频率(20kHz),因此可以完全复原音频信号。
举例说明
-
满足采样定理:
- 一个正弦信号 x ( t ) = sin ( 2 π f t ) x(t) = \sin(2\pi f t) x(t)=sin(2πft),频率为 f = 1 f = 1 f=1Hz。如果采样频率为 f s = 2.5 f_s = 2.5 fs=2.5Hz,则采样点足够多,可以完全重建原信号。
-
不满足采样定理(混叠):
- 同样的正弦信号 f = 1 f = 1 f=1Hz,如果采样频率为 f s = 1.5 f_s = 1.5 fs=1.5Hz,采样点不足,重建时会产生错误,导致低频信号与原信号混叠。
代码示例
import numpy as np
import matplotlib.pyplot as plt# 参数设置
f = 1.0 # 正弦信号频率 (Hz)
T = 2.0 # 信号持续时间 (秒)
t_continuous = np.linspace(0, T, 1000) # 连续时间点,用于绘制原始信号
x_continuous = np.sin(2 * np.pi * f * t_continuous) # 原始正弦信号# 情况1:满足采样定理 (fs = 2.5 Hz)
fs1 = 2.5 # 采样频率
dt1 = 1 / fs1 # 采样间隔
t_sampled1 = np.arange(0, T, dt1) # 采样时间点
x_sampled1 = np.sin(2 * np.pi * f * t_sampled1) # 采样信号# 情况2:不满足采样定理 (fs = 1.5 Hz)
fs2 = 1.5 # 采样频率
dt2 = 1 / fs2 # 采样间隔
t_sampled2 = np.arange(0, T, dt2) # 采样时间点
x_sampled2 = np.sin(2 * np.pi * f * t_sampled2) # 采样信号# 重建信号(简单插值,用于可视化)
# 使用线性插值模拟重建(实际重建可能使用sinc插值)
t_reconstruct = np.linspace(0, T, 1000)
x_reconstruct1 = np.interp(t_reconstruct, t_sampled1, x_sampled1) # 情况1重建
x_reconstruct2 = np.interp(t_reconstruct, t_sampled2, x_sampled2) # 情况2重建# 可视化
plt.figure(figsize=(12, 8))# 情况1:满足采样定理
plt.subplot(2, 1, 1)
plt.plot(t_continuous, x_continuous, 'b-', label='Original Signal (1 Hz)')
plt.stem(t_sampled1, x_sampled1, 'r', markerfmt='ro', label='Sampled Points (2.5 Hz)')
plt.plot(t_reconstruct, x_reconstruct1, 'g--', label='Reconstructed Signal')
plt.title('Case 1: Sampling Theorem Satisfied (fs = 2.5 Hz)')
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')
plt.legend()
plt.grid(True)# 情况2:不满足采样定理(混叠)
plt.subplot(2, 1, 2)
plt.plot(t_continuous, x_continuous, 'b-', label='Original Signal (1 Hz)')
plt.stem(t_sampled2, x_sampled2, 'r', markerfmt='ro', label='Sampled Points (1.5 Hz)')
plt.plot(t_reconstruct, x_reconstruct2, 'g--', label='Reconstructed Signal')
plt.title('Case 2: Sampling Theorem Violated (fs = 1.5 Hz, Aliasing)')
plt.xlabel('Time (s)')
plt.ylabel('Amplitude')
plt.legend()
plt.grid(True)plt.tight_layout()
plt.show()
运行结果
运行代码后,看到两幅图:
- 情况1(满足采样定理):
- 采样点(红色)分布较密,能够捕捉信号的完整周期。
- 重建信号(绿色虚线)与原始信号(蓝色实线)几乎重合,表明信号被正确重建。
- 情况2(不满足采样定理):
- 采样点(红色)分布较稀疏,无法捕捉信号的完整周期。
- 重建信号(绿色虚线)呈现低频波形,与原始信号明显不同,展示了混叠效应。
结果分析
- 情况1:采样频率 f s = 2.5 f_s = 2.5 fs=2.5Hz 大于奈奎斯特频率 2 f = 2 2f = 2 2f=2 Hz,满足采样定理,采样点足够多,信号可完全重建。
- 情况2:采样频率 f s = 1.5 f_s = 1.5 fs=1.5 Hz 小于奈奎斯特频率 2 f = 2 2f = 2 2f=2 Hz,导致采样点不足,重建信号出现混叠,表现为低频失真(可能被错误解读为更低频率的信号)。
实际应用
香农采样定理广泛应用于信号处理、通信和数据采集领域:
-
音频信号采样:
- 在音频处理(如CD音质)中,最高人耳可听频率为20kHz,按采样定理,采样率至少为40kHz。CD音质的采样率选择为44.1kHz,满足采样定理并留有余量。
-
医学成像:
- 在CT、MRI等医学成像中,数据采样需要满足采样定理,以确保信号的完整性和还原质量。
-
通信系统:
- 无线通信中,为了有效传输和重建信号,采样频率必须满足带宽需求。
-
数字信号处理:
- 在DSP中,采样定理指导如何采集模拟信号并转换为数字信号,同时避免混叠。
总结
香农采样定理是信号采样的基础理论,解决了如何从连续信号生成数字信号并重建的问题。满足采样定理的条件是避免信号失真和混叠的前提,是现代数字技术不可或缺的理论工具。
混叠(Aliasing)详解
定义
混叠(Aliasing)是指在对信号进行采样时,如果采样频率低于信号中频率分量的两倍(奈奎斯特频率),高频信号会以低频的形式出现在采样后的信号中,从而导致失真。这种失真是不可逆的,无法通过后续处理恢复原始信号。
原理
混叠发生的核心原因是采样不充分,导致不同的频率分量在采样后**“重叠”**在低频范围,难以区分原始信号。
数学上,采样过程可以表示为原始信号的频谱 X ( f ) X(f) X(f) 的周期性复制(以采样频率 f s f_s fs 为周期)。如果采样频率 f s f_s fs 小于两倍的最高信号频率 f max f_{\text{max}} fmax,复制的频谱会重叠,导致混叠。
-
采样定理:
f s ≥ 2 f max f_s \geq 2f_{\text{max}} fs≥2fmax
其中:- f s f_s fs:采样频率
- f max f_{\text{max}} fmax:信号中的最高频率
-
未满足采样定理时(混叠现象):
当 f s < 2 f max f_s < 2f_{\text{max}} fs<2fmax,信号中的高频分量会被“映射”到低频,表现为错误的频率信息。
混叠的直观理解
- 图形化解释:
- 假设一个高频正弦波信号,如果采样点过少(采样频率不足),这些采样点会落在一个低频正弦波上,使得采样信号看起来像是低频信号。
- 日常类比:
- 混叠类似于“车轮效应”:在电影中,当车轮转动过快时,会给人一种车轮反向旋转甚至停止的视觉错觉。这是因为电影的帧率(采样率)不足以准确捕捉车轮真实的运动。
混叠的数学推导
设信号为 x ( t ) = sin ( 2 π f 0 t ) x(t) = \sin(2\pi f_0 t) x(t)=sin(2πf0t),其中 f 0 > f s / 2 f_0 > f_s/2 f0>fs/2。采样得到的信号为:
x [ n ] = x ( n T s ) = sin ( 2 π f 0 n T s ) x[n] = x(nT_s) = \sin\left(2\pi f_0 n T_s\right) x[n]=x(nTs)=sin(2πf0nTs)
采样频率为 f s = 1 / T s f_s = 1/T_s fs=1/Ts。由于频率是周期性的,高频分量 f 0 f_0 f0 会被映射到一个低频 ∣ f alias ∣ |f_{\text{alias}}| ∣falias∣,计算公式为:
f alias = ∣ f 0 − k f s ∣ f_{\text{alias}} = |f_0 - k f_s| falias=∣f0−kfs∣
其中 k k k 是使 f alias f_{\text{alias}} falias 落在 [ 0 , f s / 2 ] [0, f_s/2] [0,fs/2] 内的整数。
混叠的后果
-
频谱失真:
- 原始信号的高频分量会“叠加”到低频范围,导致频谱中出现错误的频率信息。
-
不可恢复:
- 混叠是不可逆的,即使使用滤波器也无法恢复原始信号。
-
信号失真:
- 采样信号不再准确反映原始信号,影响后续分析和处理。
如何避免混叠
为了避免混叠,可以采取以下措施:
-
提高采样率:
- 根据采样定理,采样频率 f s f_s fs 应至少是信号最高频率 f max f_{\text{max}} fmax 的两倍(奈奎斯特频率):
f s ≥ 2 f max f_s \geq 2f_{\text{max}} fs≥2fmax
- 根据采样定理,采样频率 f s f_s fs 应至少是信号最高频率 f max f_{\text{max}} fmax 的两倍(奈奎斯特频率):
-
抗混叠滤波器(Anti-Aliasing Filter):
- 在采样前使用低通滤波器,滤除高于奈奎斯特频率 ( f s / 2 ) (f_s/2) (fs/2) 的信号成分。
- 抗混叠滤波器通常是模拟低通滤波器,其截止频率为 f s / 2 f_s/2 fs/2。
实例解析
-
未发生混叠的情况:
- 信号: x ( t ) = sin ( 2 π ⋅ 10 t ) x(t) = \sin(2\pi \cdot 10 t) x(t)=sin(2π⋅10t)
- 最高频率:10Hz
- 采样频率:25Hz
- 满足采样定理 f s = 25 H z > 2 × 10 H z f_s = 25Hz > 2 \times 10Hz fs=25Hz>2×10Hz,可以准确重建信号。
-
发生混叠的情况:
- 信号: x ( t ) = sin ( 2 π ⋅ 10 t ) x(t) = \sin(2\pi \cdot 10 t) x(t)=sin(2π⋅10t)
- 采样频率:15Hz
- 不满足采样定理 f s = 15 H z < 2 × 10 H z f_s = 15Hz < 2 \times 10Hz fs=15Hz<2×10Hz,信号中10Hz的频率会被混叠到 15 − 10 = 5 15 - 10 = 5 15−10=5Hz,采样结果会错误显示为5Hz信号。
应用场景
-
音频信号处理:
- 在语音采样中,常用44.1kHz采样率,以避免20kHz以上声音引起的混叠。
-
医学信号采集:
- 在EEG(脑电图)采集中,通常对信号进行低通滤波以消除高频噪声,防止混叠。
-
通信系统:
- 抗混叠滤波器是通信系统中模数转换(ADC)不可缺少的部分。
总结
- **混叠的核心问题:**采样频率不足以表示信号中的高频成分。
- 解决混叠的方法:
- 增加采样率,满足采样定理。
- 通过抗混叠滤波器去除高频分量。
- **关键点:**理解混叠现象有助于避免信号失真,确保信号处理的准确性。