[ PROMPT_NODE_26886 ]
signal_processing
[ SKILL_DOCUMENTATION ]
# 通用信号处理
## 概述
NeuroKit2 提供全面的信号处理工具,适用于任何时间序列数据。这些函数支持跨所有信号类型的滤波、变换、峰值检测、分解和分析操作。
## 预处理函数
### signal_filter()
应用频域滤波以去除噪声或隔离频段。
python
filtered = nk.signal_filter(signal, sampling_rate=1000, lowcut=None, highcut=None,
method='butterworth', order=5)
**滤波器类型(通过 lowcut/highcut 组合):**
**低通** (仅 highcut):
python
lowpass = nk.signal_filter(signal, sampling_rate=1000, highcut=50)
- 去除高于 highcut 的频率
- 平滑信号,去除高频噪声
**高通** (仅 lowcut):
python
highpass = nk.signal_filter(signal, sampling_rate=1000, lowcut=0.5)
- 去除低于 lowcut 的频率
- 去除基线漂移、直流偏移
**带通** (同时包含 lowcut 和 highcut):
python
bandpass = nk.signal_filter(signal, sampling_rate=1000, lowcut=0.5, highcut=50)
- 保留 lowcut 和 highcut 之间的频率
- 隔离特定频段
**带阻/陷波** (去除电源线噪声):
python
notch = nk.signal_filter(signal, sampling_rate=1000, method='powerline', powerline=50)
- 去除 50 或 60 Hz 电源线噪声
- 窄带陷波滤波器
**方法:**
- `'butterworth'` (默认): 平滑频率响应,通带平坦
- `'bessel'`: 线性相位,最小振铃效应
- `'chebyshev1'`: 更陡峭的滚降,通带内有纹波
- `'chebyshev2'`: 更陡峭的滚降,阻带内有纹波
- `'elliptic'`: 最陡峭的滚降,两个频带内均有纹波
- `'powerline'`: 用于 50/60 Hz 的陷波滤波器
**阶数参数:**
- 高阶:更陡峭的过渡,更多的振铃效应
- 低阶:更平缓的过渡,更少的振铃效应
- 典型值:生理信号为 2-5
### signal_sanitize()
去除无效值 (NaN, inf) 并可选择进行插值。
python
clean_signal = nk.signal_sanitize(signal, interpolate=True)
**使用场景:**
- 处理缺失数据点
- 去除标记为 NaN 的伪影
- 为需要连续数据的算法准备信号
### signal_resample()
改变信号的采样率(上采样或下采样)。
python
resampled = nk.signal_resample(signal, sampling_rate=1000, desired_sampling_rate=500,
method='interpolation')
**方法:**
- `'interpolation'`: 三次样条插值