2. 波浪观测数据获取与预处理实战

波浪谱分析的质量上限,在数据进入频谱计算之前就已经被决定了。无论后续的谱估计方法多么精细,如果输入序列中存在未识别的缺测段、缓慢漂移或个别极端野值,谱形都会出现虚假的能量峰、低频抬升或高频噪声底抬高。本节围绕三类主流波浪观测手段的数据特点,讲清楚从原始记录到可用于谱分析的干净序列之间,需要完成哪些判断与操作。

三类数据源的特性差异

浮标是最常见的波浪观测平台,通常以加速度计或倾斜仪测量浮体运动,再通过传递函数反演得到水面高程。其数据为定点时间序列,采样频率常见为 1~4 Hz,记录长度多为 17~34 分钟的原始段,再统计为逐半小时或逐小时的波要素与谱。浮标数据的优势是时间连续、谱形完整,缺点是存在锚系失效、通信中断、传感器漂移导致的整段缺失或缓慢基线偏移。

雷达(如 X 波段导航雷达、高频地波雷达)通过海面后向散射成像反演波浪场,输出的是空间上的波数—频率信息或二维图像序列。其数据为面状分布,能反映波场空间不均匀性,但受降雨、海面浮油、低风速等因素影响,信噪比波动大,且反演算法本身引入系统性偏差。

卫星高度计是沿轨观测,单点采样间隔约 1 秒,沿轨空间分辨率约 7 km,返回有效波高、风速和后向散射系数。它的优势是全球覆盖、长期一致性好,缺点是时间上稀疏(重访周期数天至数十天)、无法给出方向谱,且近岸浅水与降雨条件下有效波高会被污染。

三类波浪观测数据源与预处理路径 浮标(定点时序) · 加速度/倾斜 → 水面高程 · 1~4 Hz,17~34 min 原始段 · 输出:波要素 + 一维/方向谱 风险:锚系失效、通信中断、基线漂移 预处理重点:缺测段识别、去趋势 雷达(面状成像) · 海面后向散射 → 波数—频率 · 图像序列,空间覆盖广 · 输出:二维波场、方向谱 风险:降雨、低风速、浮油致信噪比下降 预处理重点:异常值剔除、质量掩膜 卫星高度计(沿轨) · 沿轨 1 s 采样,约 7 km 分辨率 · 输出:有效波高、风速、σ0 · 重访周期数天至数十天 风险:近岸浅水、降雨污染有效波高 预处理重点:质量控制标志筛选 统一预处理链 缺测识别 → 去趋势 → 异常值剔除 → 质量评估 → 干净序列 进入谱估计的输入序列 等间隔、零均值、无野值、带质量标记

缺失值处理:先判断缺测类型,再决定填补策略

缺测不能一概而论。浮标数据中常见的缺测有三类:单点或短时尖峰丢失(传感器瞬时饱和)、整段连续缺失(通信中断或供电故障)、以及周期性缺测(如每小时的校准窗口)。对第一类,若缺失点数少于总点数的 1% 且不连续,可直接线性插值;对第二类,若连续缺失超过记录长度的 10%,插值会引入虚假的低频能量,正确做法是将该段标记为无效并整段剔除,而不是强行补齐。

一个可操作的判断流程是:先统计缺失比例与最长连续缺失长度,再决定处理方式。以 2048 点、采样间隔 0.5 s 的浮标段为例,若缺失 12 点且分散,线性插值后对谱的影响可忽略;若中间连续缺失 300 点(约 150 s),则相当于在序列中挖去一个低频周期,插值会人为制造一个缓变趋势,谱在 0.01 Hz 附近出现虚假抬升。此时应将该段判为无效,或改用相邻有效段拼接并记录拼接位置。

import numpy as np

def fill_gaps(x, max_gap=5):
    """线性插值填补短缺口,长缺口保留 NaN 并返回掩膜"""
    x = x.astype(float).copy()
    nan_idx = np.isnan(x)
    if not nan_idx.any():
        return x, np.ones_like(x, dtype=bool)
    # 标记连续缺口长度
    valid_mask = ~nan_idx
    idx = np.arange(len(x))
    x_filled = np.interp(idx, idx[valid_mask], x[valid_mask])
    # 找出连续缺口超过 max_gap 的区间
    gap_id = np.cumsum(nan_idx & ~np.r_[False, nan_idx[:-1]])
    for g in np.unique(gap_id[nan_idx]):
        seg = np.where(gap_id == g)[0]
        if len(seg) > max_gap:
            valid_mask[seg] = False
    x_filled[~valid_mask] = np.nan
    return x_filled, valid_mask

去趋势:消除非波浪因素的缓慢漂移

浮标记录中常含有仪器基线漂移、潮位变化或长周期涌浪叠加造成的缓慢趋势。若不去除,这部分能量会在谱的低频端形成一个大峰,掩盖真实的风浪谱形。常用做法是对整段序列拟合一次线性趋势并减去,或采用高通滤波保留 0.03 Hz 以上的成分。需要注意,去趋势会同时削弱真实的长周期涌浪能量,因此对以涌浪为主的观测段,应慎用线性去趋势,改为仅去除均值或使用更长的记录段。

实际操作中,可先计算序列的线性拟合斜率,若斜率对应的整段漂移量超过有效波高统计量的 10%,则说明趋势不可忽略。例如一段 34 分钟记录,有效波高约 1.2 m,若线性拟合显示整段抬升 0.15 m,则漂移占比约 12%,应执行去趋势;若仅抬升 0.03 m,则可只去均值。

异常值剔除:区分野值与真实大浪

异常值剔除最容易犯的错误,是把真实的大浪当成野值剔除。合理的做法是基于局部统计而非全局阈值。常用判据是:对序列做滑动中值滤波得到基线,计算残差,若某点残差超过局部标准差(如 5 倍)且该点前后变化率异常,则判为野值。对于浮标加速度数据,还可结合物理上限判断,例如有效波高 3 m 的海况下,单点水面高程超过 8 m 基本可判为异常。

剔除后的处理不是简单置零,而是将该点标记为缺测,再按缺测策略处理。置零会在谱的高频端引入宽带噪声,这是初学者常犯的错误。

数据质量评估:给每段数据一个可信度标签

预处理完成后,应为每段数据生成质量标记,供后续谱分析筛选。建议至少记录以下指标:有效数据比例、最长连续缺失长度、去趋势前后方差变化、剔除野值数量、以及谱计算后的高频噪声底水平。可据此将数据分为三级:A 级(有效比例大于 95%、无长缺口、野值少于 0.5%)可直接用于谱分析;B 级(有效比例 80%~95%)可用于统计但需在结果中注明;C 级(有效比例低于 80% 或存在长缺口)不进入谱分析。

质量评估不是一次性动作。同一批浮标数据在不同海况下表现差异很大,建议把质量标记与海况参数(如风速、有效波高)一起存档,便于后续排查“某段谱形异常”时快速定位是数据问题还是物理过程问题。

完成上述四步后,进入谱估计的序列应满足:等间隔采样、零均值、无未标记缺测、无野值、并附带质量等级。这一步做扎实,后续的谱形解读才有意义。