4. 温漂数据预处理与特征提取实战

拿到一组量子传感器的实测温漂数据,直接丢进拟合或神经网络,往往得不到可用的模型。原始数据里混着高频噪声、偶发跳点、开机瞬态和量程漂移,这些成分会严重干扰斜率、迟滞等特征参数的估计。本节以一组典型的量子传感器温漂实测数据为例,完整走一遍从原始序列到高质量特征数据集的流程:去噪、平滑、异常值剔除、归一化,再提取斜率、迟滞、非线性三类特征参数。

一、先明确数据对象与参照约定

假设我们采集的是某型量子传感器(例如基于原子气室的磁强计)在温箱中的静态输出。实验设定:温箱从 15 ℃ 升到 45 ℃ 再降回 15 ℃,升降温速率约 0.5 ℃/min,每个温度点保温 5 min 后采样,采样率 1 Hz,每个温度平台取 60 个点。传感器输出为电压量 V_out,单位 mV,同时记录温度 T(由铂电阻测得)。

参照约定必须先行定义并全文一致:温度 T 为自变量,升温方向为正、降温方向为负;传感器输出偏差定义为 ΔV = V_out(T) − V_out(T₀),其中 T₀ = 25 ℃ 为参考温度。斜率即 dΔV/dT,单位 mV/℃。迟滞定义为同一温度下升温支路与降温支路输出之差。所有后续计算与图示均遵循这一约定。

二、去噪与平滑:先看清噪声来源再选方法

原始序列的噪声大致分两类:一是采样带宽内的白噪声,标准差约 0.8 mV;二是工频与温箱压缩机带来的周期性干扰,表现为 50 Hz 及其谐波附近的窄带成分。对前者,滑动平均或 Savitzky-Golay 滤波都有效;对后者,直接平滑会把周期性纹波"抹"进曲线,反而引入虚假起伏。

实操上建议分两步走。第一步用滑动中值滤波(窗口 5 点)压制偶发尖峰,中值滤波对孤立跳点不敏感,不会像均值滤波那样把跳点能量扩散到邻域。第二步用 Savitzky-Golay 滤波(窗口 21 点、二阶多项式)做平滑,它在保留曲线拐点和斜率信息方面优于滑动平均,这对后续斜率特征提取很关键。若周期性干扰明显,可先在频域用陷波器抑制 50 Hz 及其谐波,再做时域平滑。

import numpy as np
from scipy.signal import medfilt, savgol_filter, iirnotch, filtfilt

# V_raw: 原始输出序列, fs = 1 Hz
V_med = medfilt(V_raw, kernel_size=5)          # 中值去尖峰
b, a = iirnotch(50, Q=30, fs=1)                # 50 Hz 陷波
V_notch = filtfilt(b, a, V_med)
V_smooth = savgol_filter(V_notch, 21, 2)       # SG 平滑

平滑后应回看残差:V_raw − V_smooth 的均方根若仍在 0.8 mV 量级且无明显周期性结构,说明平滑没有过度吞掉真实信号;若残差出现与温度平台同步的台阶,则窗口过大,需要缩小。

三、异常值剔除:用物理约束而非纯统计

纯 3σ 准则在温漂数据上容易误杀——升温支路本身就有系统性偏移,全局标准差会被支路差异撑大。更稳妥的做法是按温度平台分组做局部统计:对每个保温平台内的 60 个点计算中位数与 MAD(中位数绝对偏差),将偏离中位数超过 3×1.4826×MAD 的点判为异常。同时叠加物理约束:单点跳变超过 5 mV、或输出超出传感器量程的样本直接剔除。

剔除后不要简单删点造成时间轴断裂,建议用线性插值补齐,并记录被剔除点的比例。工程经验上,剔除比例超过 5% 就应回头检查采集链路,而不是继续往下建模。

四、归一化:为特征提取和建模统一尺度

温度与电压量纲不同,若直接送入回归或神经网络,梯度会被大量纲变量主导。这里采用最小-最大归一化把温度映射到 [0,1],把 ΔV 按其全量程映射到 [−1,1],便于迟滞的正负号直观呈现。注意归一化参数必须只用训练集统计量,验证集和测试集复用同一组 min/max,否则会造成信息泄漏。

下图展示了从原始序列到特征数据集的完整处理链,以及各环节的输出形态与关键判据。

温漂数据预处理与特征提取处理链 原始序列 V_raw, T 白噪声 0.8 mV 中值滤波 窗口 5 点 压制孤立尖峰 陷波 + SG 平滑 50 Hz 陷波 / 21 点二阶 保留拐点与斜率 异常值剔除 平台内 MAD + 物理约束 剔除比例 ≤ 5% 归一化 T→[0,1] ΔV→[−1,1] 特征参数提取(基于归一化后的升降温双支路) 斜率 k = dΔV/dT 分段线性拟合,取 25 ℃ 附近 示例:升温 0.42 mV/℃ 迟滞 H(T) = ΔV↑ − ΔV↓ 同温度下升降温支路之差 示例:峰值 1.6 mV @ 30 ℃ 非线性 NL 相对最佳拟合直线的最大偏差 示例:±0.9% FS 高质量特征数据集 T_norm, ΔV_norm, k, H, NL 供温漂建模使用 质量判据 残差 RMS ≈ 噪声水平 剔除比例 ≤ 5% 一致性检查 升降温支路端点闭合 迟滞符号符合约定

五、三类特征参数的具体算法

斜率特征:把升温支路按温度分段(如 15–25 ℃、25–35 ℃、35–45 ℃),每段用最小二乘拟合直线,取斜率作为该温区的灵敏度。若关心局部灵敏度,可在 25 ℃ 附近取 ±2 ℃ 窗口做线性拟合,得到参考温度处的斜率 k₂₅。示例数据中升温支路 k₂₅ ≈ 0.42 mV/℃,降温支路 ≈ 0.39 mV/℃,两者之差本身就是迟滞的一种度量。

迟滞特征:将升温支路与降温支路按温度重采样到同一温度网格(如 0.5 ℃ 间隔),逐点相减得到 H(T)。迟滞的典型形态是随温度先增后减的"回环",因此除峰值 H_max 外,还应记录峰值所在温度 T_Hmax 和回环面积(对 H(T) 积分)。示例中 H_max ≈ 1.6 mV 出现在 30 ℃ 附近,回环面积约 18 mV·℃。

非线性特征:对升温支路做一次最佳直线拟合,计算各温度点相对该直线的最大偏差,除以满量程输出得到百分比非线性。示例数据 NL ≈ ±0.9% FS。若非线性呈明显 S 形,说明存在三次项成分,建模时应保留二次或三次项,而不是强行用线性模型。

六、结果判读与数据集交付

处理完成后要做两项一致性检查。其一,升降温支路在 15 ℃ 端点应闭合(差值接近零),若端点差超过迟滞峰值的 20%,说明保温时间不足或存在热惯性滞后,需要回看采集协议。其二,迟滞符号应符合约定:按本文定义 ΔV↑ − ΔV↓,若升温支路整体高于降温支路,H 为正。符号反了通常是支路标签错位,属于常见的数据整理错误。

最终交付的特征数据集建议按如下字段组织,每行对应一个温度点,便于直接送入回归模型:

字段含义示例值单位
T_norm归一化温度0.50—
dV_up升温支路归一化偏差0.21—
dV_down降温支路归一化偏差0.18—
k_local局部斜率0.42mV/℃
H迟滞量1.6mV
NL非线性度0.9% FS
预处理参数(滤波窗口、MAD 倍数、归一化 min/max)应随数据集一并存档。同一批传感器后续复测时复用同一组参数,才能保证特征可比;换批次或换量程时必须重新标定归一化参数。

至此,原始温漂序列被转换为尺度统一、异常受控、特征明确的数据集。斜率刻画灵敏度随温度的漂移,迟滞刻画升降温路径的不可逆差异,非线性刻画曲线偏离直线的程度——这三类参数正是后续温漂建模的输入,也是判断补偿效果是否达标的基准。