| 方法 | 原理 | 优点 | 缺点 | 适用场景 | 精度 |
|---|---|---|---|---|---|
| 统计法 | 4倍标准差 | 简单快速、稳健 | 假设高斯分布 | 通用、快速评估 | ★★★★☆ |
| 谱分析法 | 频域积分 | 理论严格、信息丰富 | 计算复杂、需大数据 | 科研、详细分析 | ★★★★★ |
| LiDAR法 | 实测统计 | 真实测量 | 采样有限、有偏差 | 实际观测验证 | ★★★☆☆ |
| 时域法 | 零跨越波高 | 符合定义、直观 | 依赖剖面选择 | 工程应用 | ★★★★☆ |
统计法的核心在于利用海面高度的标准差来估算有效波高。其核心公式为:
Hs = 4σ
其中 σ 表示海面高度的标准差。根据线性波浪理论和Rayleigh分布,对于窄带高斯过程,波高服从Rayleigh分布,有效波高等于最大1/3波高的平均值,近似为 4σ。
对于高斯随机过程 η(x,y),其核心公式为:
σ? = E[(η - μ)?] (方差)
Rayleigh分布下:
Hs = E[H?/?] = 4.004σ ≈ 4σ
% 基本版本 Hs = 4 * std(hts(:)); % 改进版本(去趋势) hts_detrend = detrend(hts(:)); % 去除线性趋势 Hs = 4 * std(hts_detrend); % 加权版本(考虑空间相关性) % 对于相关长度 Lc,有效独立样本数 N_eff = N * (dx/Lc)
谱分析法通过频域积分来计算有效波高。其核心公式为:
Hs = 4√m?
m? = ∫?^∞ S(f)df (频率谱)
m? = ∫?^∞ S(k)dk (波数谱)
其中 m0 是谱的零阶矩(总能量)。m0 代表海面高度的总方差,直接从能量谱计算,理论最严格。
1. 海面高度场 hts(x,y)
↓
2. 2D FFT → 波数谱 S(kx, ky)
↓
3. 径向积分 → 一维全向谱 S(k)
↓
4. 数值积分 → m? = ∫S(k)dk
↓
5. Hs = 4√m?
% 中心化 hts_centered = hts - mean(hts(:)); % 加窗(减少频谱泄漏) window = hanning(m) * hanning(n)'; hts_windowed = hts_centered .* window; % FFT S_2D = abs(fft2(hts_windowed))^2 / (m*n); % 波数网格 kx = 2π/L * [-N/2 : N/2-1]; ky = 2π/L * [-M/2 : M/2-1];
% 极坐标变换
K = sqrt(Kx^2 + Ky^2);
θ = atan2(Ky, Kx);
% 在波数环上平均
for each k_bin:
S_1D(k) = mean(S_2D where K ∈ [k, k+dk]);
S_1D(k) *= 2πk; % 雅可比因子
end
| 参数 | 要求 | 原因 |
|---|---|---|
| 场景尺寸 | L > 10λ_peak | 包含足够波长 |
| 分辨率 | dx < λ_peak/10 | Nyquist采样定理 |
| 时间长度 | T > 20T_peak | 统计稳定性 |
| 窗函数 | Hanning/Hamming | 减少频谱泄漏 |
% 将数据分成重叠段
overlap = 0.5;
segment_length = 256;
[Pxx, f] = pwelch(data, hanning(segment_length),
overlap*segment_length, [], fs);
% 计算方向分布函数 D(θ) = S(k,θ) / S(k); % 主波向 θ_mean = atan2(∫sin(θ)S(k,θ)dθ, ∫cos(θ)S(k,θ)dθ);
% 峰值频率 [~, idx] = max(S_1D); f_peak = f(idx); % 谱宽度 ν = √(m0*m2/m1^2 - 1); % 0=窄带, 1=宽带 % 高阶矩 m1 = ∫f·S(f)df; m2 = ∫f^2·S(f)df;
| 误差源 | 影响 | 解决方法 |
|---|---|---|
| 频谱泄漏 | ±5% | 加窗、零填充 |
| 有限场景 | ±10% | 增大场景尺寸 |
| 离散化误差 | ±2% | 提高分辨率 |
| 非平稳性 | ±15% | 分段处理 |
LiDAR法的核心思想是利用激光雷达实际测量的海面高度点,模拟真实观测过程,评估采样策略的影响。
LiDAR扫描 ≠ 完整海面
├─ 空间采样:沿航迹线扫描
├─ 时间采样:飞机移动过程
├─ 角度采样:扫描角度范围
└─ 回波筛选:强度阈值过滤
根据Nyquist条件,采样间隔应小于最小波长的一半:
dx_scan < λ_min / 2
在实际应用中,扫描角度范围通常为-10°至+10°,使用64个采样点。对于高度为400米的情况,采样间隔约为2.9米:
dx_scan ≈ 2 * h * tan(20°/64) ≈ 2.9m (h=400m)
因此,可分辨的最短波长为:
λ_min = 2 * dx_scan ≈ 5.8m
当飞机以100米/秒的速度飞行,每秒进行一次扫描时,相邻两次扫描之间的距离为100米。考虑到海浪传播速度为5.6米/秒,一秒钟内海浪会移动5.6米,这会产生时空耦合效应。
斜视角效应可以通过以下公式计算:
θ_lidar = acos(Nx·nx + Ny·ny + Nz·nz)
为了修正投影,可以使用以下公式:
z_corrected = z_measured / cos(θ_lidar)
| 策略 | 参数 | 效果 |
|---|---|---|
| 增加扫描点数 | 64 → 128 | 提高空间分辨率 |
| 扩大扫描角 | ±10° → ±20° | 增加覆盖范围 |
| 降低飞行高度 | 400m → 200m | 增加足迹密度 |
| 提高扫描频率 | 1Hz → 10Hz | 提高时间分辨率 |
总误差由采样误差、噪声误差和几何误差组成:
ε_total? = ε_sampling? + ε_noise? + ε_geometry?
其中,采样误差计算公式为:
ε_sampling = σ * √(1 - N_eff/N_total)
噪声误差(激光测距精度)通常为0.01米:
ε_noise ≈ 0.01m (典型值)
几何误差(姿态角误差)计算公式为:
ε_geometry = h * tan(Δθ) % Δθ ≈ 0.01°
有效波高的定义是最大1/3波高的平均值,这是1952年由Sverdrup & Munk提出的原始定义。
1. 选择剖面线(通常取中心线)
↓
2. 去除平均值(零均值化)
↓
3. 检测零跨越点(上穿或下穿)
↓
4. 分割单个波浪
↓
5. 计算每个波的波高 H = max - min
↓
6. 排序,取最大1/3的平均
方法1:符号变化
zero_crossings = find(diff(sign(profile)) ~= 0);
方法2:插值精确定位
for i = 1:length(profile)-1
if profile(i)*profile(i+1) < 0
% 线性插值
x_cross = i - profile(i)/(profile(i+1)-profile(i));
zero_crossings = [zero_crossings, x_cross];
end
end
方法3:上穿/下穿区分
up_crossings = find(diff(sign(profile)) == 2); % 上穿
down_crossings = find(diff(sign(profile)) == -2); % 下穿
定义1:波峰到波谷
for i = 1:length(zero_crossings)-1
segment = profile(zero_crossings(i):zero_crossings(i+1));
H(i) = max(segment) - min(segment);
end
定义2:相邻上穿点之间
for i = 1:length(up_crossings)-1
segment = profile(up_crossings(i):up_crossings(i+1));
H(i) = max(segment) - min(segment);
end
定义3:波峰到前后波谷的平均
H(i) = crest(i) - mean([trough(i-1), trough(i+1)]);
排序:
H_sorted = sort(H, 'descend');
取最大1/3:
N_significant = round(length(H_sorted) / 3);
Hs = mean(H_sorted(1:N_significant));
% 其他相关统计量
| 策略 | 方法 | 适用场景 |
|---|---|---|
| 中心线 | profile = hts(M/2, ...) | 简单情况 |
| 均匀分布 | 沿主波向切片 | 单向波 |
| 多剖面平均 | 多个剖面取平均值 | 提高结果稳定性 |
| 二维扩展 | 统计所有方向的数据 | 复杂海洋环境 |
| 误差来源 | 典型值 | 影响因素 |
|---|---|---|
| 剖面选择 | ±10% | 海况的复杂程度 |
| 波数不足 | ±15% | N < 30 |
| 零跨越定义 | ±5% | 噪声水平 |
| 非平稳性 | ±20% | 时变的海况 |
谱分析法: ±2% (理论最优)
统计法: ±3% (稳健)
时域法: ±5% (定义相符)
LiDAR法: ±10% (采样限制)
统计法: O(N) [最快]
时域法: O(N log N)
LiDAR法: O(N)
谱分析法: O(N log N) [FFT]
统计法 ←→ 谱分析法
↓ ↓
快速评估 详细分析
↓ ↓
时域法 ←→ LiDAR法
↓ ↓
工程应用 实测验证
% 场景1:快速评估
if need_speed
use 统计法
end
% 场景2:科研分析
if need_details
use 谱分析法 + 时域法验证
end
% 场景3:系统验证
if test_lidar_system
use LiDAR法 + 统计法对比
end
% 场景4:工程应用
if engineering_design
use 时域法 (符合规范定义)
end
% 场景5:综合评估
use all_methods
compare_results
confidence = std(results) / mean(results)
多方法交叉验证
Hs_stat = method1(hts);
Hs_spec = method2(hts);
Hs_time = method3(hts);
if abs(Hs_stat - Hs_spec) / Hs_stat < 0.05
confidence = 'high'
else
warning('方法间差异较大,需检查数据质量')
end
数据质量检查
% 检查高斯性
[h, p] = kstest(normalize(hts(:)));
if p < 0.05
warning('数据非高斯,统计法可能有偏差')
end
% 检查平稳性
[pxx, f] = pwelch(hts(M/2,:));
if max(pxx)/mean(pxx) > 10
warning('谱峰过尖,可能非平稳')
end
误差传播分析
% Bootstrap重采样
N_bootstrap = 1000;
Hs_bootstrap = zeros(N_bootstrap, 1);
for i = 1:N_bootstrap
idx = randi(length(hts(:)), size(hts));
Hs_bootstrap(i) = 4*std(hts(idx));
end
Hs_confidence_interval = quantile(Hs_bootstrap, [0.025, 0.975]);
ISO 19901-1: 定义了海洋工程设计中使用的时域方法。
DNV-RP-C205: 规定了船舶设计中的波高(Hs)等于4倍的标准偏差(σ)。
扫码加好友,拉您进群



收藏
