4. 重采样与插值方法
在多源时序数据对齐中,各通道的采样率往往并不一致:振动传感器可能是 25.6 kHz,温度采集是 1 Hz,PLC 状态量按 100 ms 周期记录。要把它们放到同一时间轴上比较,就必须进行重采样。重采样不是简单的"抽点或补点",它本质上是一次信号重构,方法选择直接决定后续对齐与比较结论是否可信。
一、降采样:先抗混叠,再抽点
降采样(downsampling)把高采样率序列变为低采样率。若目标采样率为 fs_out,原始为 fs_in,则抽取因子 M = fs_in / fs_out。关键约束是奈奎斯特条件:降采样后能无混叠表示的最高频率为 fs_out / 2。原始信号中高于该频率的成分不会消失,而会折叠到低频段,形成无法与真实低频成分区分的混叠。
因此正确顺序是:先低通滤波(截止频率取 0.4~0.45 × fs_out,留出过渡带),再按 M 抽取。直接隔点取数是最常见的错误做法。例如把 1 kHz 的振动信号降到 100 Hz,若原始信号含 180 Hz 成分,直接抽取后它会以 |180 − 2×100| = 20 Hz 出现在结果中,看起来像真实的 20 Hz 振动,后续频谱分析将完全失真。
工程上常用多相滤波或 resample_poly 实现带抗混叠的降采样。以 Python 为例:
from scipy.signal import resample_poly
# 1 kHz -> 100 Hz,先抗混叠滤波再抽取
y_ds = resample_poly(y, up=1, down=10, window=('kaiser', 8.0))
降采样会损失高频细节,但对趋势、包络、低频工况特征影响很小,且能显著降低存储与计算量,适合长时段趋势对齐。
二、升采样:补零与插值重构
升采样(upsampling)把低采样率序列变为高采样率,插入因子 L = fs_out / fs_in。它不能创造新信息,只能按某种假设在已知点之间"猜"出中间值。常用做法是先补零(在样本间插入 L−1 个零),再低通滤波去除镜像频谱,得到平滑的重构信号;也可直接在时域做插值。
升采样的价值在于让低速率通道与高速率通道在相同时间网格上逐点比较,例如把 1 Hz 温度曲线升到 100 Hz,与振动包络做相关分析。但必须清楚:升采样后的高频内容全部来自插值假设,不能据此判断低速率通道存在快速变化。
三、线性插值与样条插值
线性插值在相邻两点间连直线,计算简单、无过冲,但对曲线信号会引入"折线"误差,等效于一个低通环节,会削弱峰值。对阶跃或尖峰信号,线性插值会把陡边拉成斜坡,峰值被明显削低。
样条插值(常用三次样条)用分段三次多项式保证一阶、二阶导数连续,曲线更平滑,对缓变信号逼近更好。但样条在数据突变处容易产生过冲与振铃,在阶跃附近可能插出原始数据中不存在的极值,若用于峰值检测会带来虚假峰值。
选择时可参考信号带宽与形态:缓变温度、压力等慢变量适合三次样条;含阶跃的状态量、开关量、脉冲类信号应使用零阶保持(前值保持)或线性插值,避免样条振铃;对频谱分析要求高的场合,优先用带抗混叠/抗镜像滤波的多相重采样,而非简单时域插值。
四、保真度影响与选择准则
重采样对保真度的影响可归纳为四类:混叠(降采样未滤波,高频折叠为假低频)、削峰(线性插值或过度平滑使峰值偏低)、振铃(样条在突变处产生虚假极值)、镜像(升采样未滤波导致频谱复制)。这四类误差都会直接污染对齐后的比较结论,例如把混叠出的假低频误判为设备故障特征频率。
选择准则建议按以下顺序判断:
- 看信号带宽:目标采样率必须大于信号最高关注频率的 2 倍,并留 10%~20% 过渡带;不满足则先滤波。
- 看信号形态:缓变模拟量可用三次样条;阶跃、开关量、脉冲用零阶保持或线性;频谱分析用多相滤波重采样。
- 看用途:仅做趋势对齐可降采样;需逐点比较则升采样到公共网格,但结论只用于低频段。
- 做复核:重采样前后对比频谱与峰值,检查是否出现新频率成分或峰值明显变化。
下面给出一份可直接套用的重采样决策参考表(示例参数,需按实际信号调整):
| 信号类型 | 典型场景 | 推荐方法 | 关键参数 | 需警惕 |
|---|---|---|---|---|
| 缓变模拟量 | 温度、压力趋势 | 三次样条升采样 | 目标网格为原周期整数倍 | 突变处振铃 |
| 振动/声学 | 频谱与包络分析 | 多相滤波降采样 | 截止 0.45·fs_out,Kaiser 窗 | 未滤波导致混叠 |
| 状态/开关量 | 启停、报警对齐 | 零阶保持 | 保持到下一跳变 | 边沿时间被量化 |
| 脉冲/尖峰 | 峰值检测 | 线性插值或保峰重采样 | 保留原始极值点 | 削峰、虚假极值 |
最后强调一个常被忽略的点:重采样后的时间戳必须同步更新。若只改数值不改时间轴,后续按时间对齐会整体错位。建议在数据管道中把"重采样方法、滤波参数、目标采样率、时间基准"作为元数据随数据一起保存,使对齐结果可追溯、可复现。