4. 温度效应分离与健康指数温度修正
温度效应分离与健康指数温度修正
海洋平台应变监测序列中,温度日周期(约24 h)与季节趋势(月—年尺度)会叠加在结构响应上,若不剔除,健康指数会把“热胀冷缩”误判为结构状态变化。本例以某平台关键构件应变测点 SG-03 为例,采用“温度回归 + 残差滤波”两步法分离温度效应,构建温度修正后的健康指数输入,并用一次已知的加载工况变化验证修正前后的敏感性差异。
数据与参照约定
示例数据为 30 天、采样间隔 10 min 的应变序列(共 4320 点),单位 με。约定:应变以受拉为正、受压为负;温度以构件表面温度传感器 T-03 读数表示,单位 ℃。健康指数输入定义为温度修正后的应变残差 ε_res,其绝对值增大表示结构状态偏离基线。
- 原始应变:
ε_raw(t) = ε_T(t) + ε_struct(t) + ε_noise(t),其中ε_T为温度效应,ε_struct为结构状态相关分量。 - 温度效应模型:
ε_T = a·T + b·T² + c,二次项用于吸收非线性热响应。 - 残差滤波:对回归残差做滑动中值(窗口 6 h)去除日周期残余,得到
ε_res。
关键实现
下面给出可直接运行的 Python 实现(依赖 numpy、pandas)。示例数据由已知温度效应与结构状态分量合成,用于演示方法流程与判读逻辑,不代表真实平台实测结果。
import numpy as np
import pandas as pd
rng = np.random.default_rng(42)
n = 4320
t_h = np.arange(n) * 10 / 60.0 # 小时
T = 18 + 6*np.sin(2*np.pi*t_h/24) + 0.002*t_h + rng.normal(0, 0.3, n) # 日周期+季节趋势
# 温度效应:线性+二次项
eps_T = 1.8*T + 0.012*T**2 - 40.0
# 结构状态:前 20 天基线,后 10 天加载工况变化(+8 με 阶跃)
eps_struct = np.zeros(n)
eps_struct[t_h >= 20*24] = 8.0
eps_raw = eps_T + eps_struct + rng.normal(0, 0.5, n)
df = pd.DataFrame({"t_h": t_h, "T": T, "eps_raw": eps_raw})
# 1) 温度回归(用前 20 天基线段拟合,避免工况变化污染模型)
base = df["t_h"] < 20*24
X = np.column_stack([df.loc[base, "T"], df.loc[base, "T"]**2, np.ones(base.sum())])
coef, *_ = np.linalg.lstsq(X, df.loc[base, "eps_raw"], rcond=None)
a, b, c = coef
print(f"拟合系数 a={a:.4f}, b={b:.5f}, c={c:.3f}")
# 2) 全序列温度效应与残差
eps_T_hat = a*df["T"] + b*df["T"]**2 + c
df["eps_r"] = df["eps_raw"] - eps_T_hat
# 3) 滑动中值滤波(窗口 36 点 = 6 h)
df["eps_res"] = df["eps_r"].rolling(window=36, center=True, min_periods=1).median()
# 4) 敏感性对比:工况变化前后 5 天均值
before = df.loc[(df.t_h >= 15*24) & (df.t_h < 20*24)]
after = df.loc[(df.t_h >= 25*24) & (df.t_h < 30*24)]
for col in ["eps_raw", "eps_res"]:
d = after[col].mean() - before[col].mean()
print(f"{col}: 变化前后均值差 = {d:.2f} με")
结果判读
示例运行中,拟合系数应接近真实值(a≈1.8、b≈0.012、c≈−40),说明回归能有效吸收温度效应。判读要点如下:
| 指标 | 修正前 ε_raw | 修正后 ε_res | 判读 |
|---|---|---|---|
| 工况变化前后均值差 | 约 8 με,但被温度季节趋势叠加放大或抵消 | 约 8 με,接近真实结构变化 | 修正后更接近真实状态变化 |
| 日周期残余幅度 | 明显(数 με 级波动) | 显著降低 | 滤波有效去除日周期 |
| 对已知阶跃的响应 | 信噪比低,易误判 | 阶跃清晰可辨 | 敏感性提升 |
回归模型应使用“无损伤基线段”数据拟合,避免把结构状态变化误吸收进温度模型;若季节趋势强,可在回归中加入时间项或分段拟合。
滑动中值窗口过大会削弱对突发状态变化的响应,窗口过小则日周期去除不彻底;建议以日周期长度的 1/4 为起点(本例 6 h)并通过残差频谱检查调整。