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。
应变序列 ε_raw SG-03,10 min 采样 温度序列 T T-03,构件表面温度 温度回归模型 ε_T = a·T + b·T² + c 最小二乘拟合 a,b,c 回归残差 ε_r = ε_raw − ε_T 含日周期残余 滑动中值滤波 窗口 6 h(36 点) 去除日周期残余 温度修正输入 ε_res 健康指数输入变量 |ε_res| 增大 → 状态偏离 敏感性验证 已知加载工况变化前后对比 修正前 vs 修正后 指数响应幅度 日周期 + 季节趋势 叠加于结构响应

关键实现

下面给出可直接运行的 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)并通过残差频谱检查调整。