在海洋、浅海和海口等水域,潮汐(潮波)现象广泛存在。从潮汐的引发机制上来说,海洋的潮汐涨落与天体引力有密切的关系。天体运行周期各不相同,产生的引潮力也各不相同,这使得潮汐现象十分复杂。但它们共同作用所引起的潮位变化可采用叠加原理——调和分析法来考虑。
更多的相关教程推荐潘海东博士的博客和b站主页。
调和分析基本原理
根据潮波方程的解的线性性质,我们可采用叠加法分析潮位变化,即可将任一潮汐测站的潮位变化表大为
Z
(
t
)
=
S
0
+
∑
j
=
1
J
H
j
c
o
s
(
σ
j
t
+
g
j
)
+
r
.
.
.
(
1
)
Z(t) = S_0 + \sum _{j = 1}^{J} H_j cos( \sigma_jt +g_j )+r \space ... (1)
Z(t)=S0+j=1∑JHjcos(σjt+gj)+r ...(1)
式中,S0是平均海平面,r为非天文因素引起的非周期性水位变化,σj 为分潮圆频率,Hj为分潮振幅,gj为分潮的初相角。
仅考虑天文潮,把(1)式线性化,得到:
Z
(
t
)
=
S
0
+
∑
j
=
1
J
(
a
j
c
o
s
σ
j
t
+
b
j
s
i
n
σ
j
t
)
.
.
.
.
(
2
)
Z(t) = S_0 + \sum _{j = 1}^{J} (a_j cos \sigma_jt + b_j sin \sigma_jt ) \space .... (2)
Z(t)=S0+j=1∑J(ajcosσjt+bjsinσjt) ....(2)
其中
H
j
=
a
j
2
+
b
j
2
,
g
j
=
a
r
c
t
a
n
(
b
j
a
j
)
.
.
.
(
3
)
H_j = \sqrt {a_j^2 + b_j^2}, \space g_j=arctan( \frac {b_j}{a_j} ) \space ... (3)
Hj=aj2+bj2, gj=arctan(ajbj) ...(3)
对于有N个时刻的潮位序列,则(2)式可变为以下方程组
[
Z
(
t
1
)
Z
(
t
2
)
.
.
.
Z
(
t
N
)
]
=
[
1
c
o
s
(
σ
1
t
1
)
.
.
.
c
o
s
(
σ
J
t
1
)
s
i
n
(
σ
1
t
1
)
.
.
.
s
i
n
(
σ
J
t
1
)
1
c
o
s
(
σ
1
t
2
)
.
.
.
c
o
s
(
σ
J
t
2
)
s
i
n
(
σ
1
t
2
)
.
.
.
s
i
n
(
σ
J
t
2
)
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
c
o
s
(
σ
1
t
N
)
.
.
.
c
o
s
(
σ
J
t
N
)
s
i
n
(
σ
1
t
N
)
.
.
.
s
i
n
(
σ
J
t
N
)
]
[
S
0
a
1
.
.
.
a
J
b
1
.
.
.
b
J
]
{\left[ \begin{array}{c} Z(t_1) \\ Z(t_2) \\ ... \\ Z(t_N ) \end{array} \right ]} = {\left[ \begin{array}{ccccccc} 1 & cos(\sigma_1t_1) & ... & cos(\sigma_Jt_1) & sin(\sigma_1t_1) & ... & sin(\sigma_Jt_1) \\ 1 & cos(\sigma_1t_2) & ... & cos(\sigma_Jt_2) & sin(\sigma_1t_2) & ... & sin(\sigma_Jt_2) \\ ... & ... & ... & ... & ... & ... & ... \\ 1 & cos(\sigma_1t_N) & ... & cos(\sigma_Jt_N) & sin(\sigma_1t_N) & ... & sin(\sigma_Jt_N) \end{array} \right ]} {\left[ \begin{array}{c} S_0 \\ a_1 \\ ... \\ a_J \\ b_1\\ ... \\ b_J\\ \end{array} \right ]}
Z(t1)Z(t2)...Z(tN)
=
11...1cos(σ1t1)cos(σ1t2)...cos(σ1tN)............cos(σJt1)cos(σJt2)...cos(σJtN)sin(σ1t1)sin(σ1t2)...sin(σ1tN)............sin(σJt1)sin(σJt2)...sin(σJtN)
S0a1...aJb1...bJ
求解上述方程组,即可得到式(2)中的各个参数值,进一步可求得分潮振幅和相位(通过式(3))。
潮位调和分析工具 T_tide
T_tide 工具包是由Pawlowicz等人1开发,可用于长时间序列潮位、潮波的调和分析。该工具包基于MATLAB,包含了一百七十余个分潮参数。
应用实例
数据集
以下所用数据集来自中国南部某潮位测站的实测潮位记录。该潮位测站记录了长期(数十年)来的高低潮出现时间及对应潮位值,即该测站的潮位记录时非等时距的潮位时间序列;而调和分析一般需要等时距潮位序列,故需要利用潮位数据集,通过合适的插值法(详见关于潮位数据插值的博文.),得到可用于调和分析的时间序列。潮位过程时间序列如下所示。
T_Tide的使用
T_TIDE工具包最核心函数就是t_tide(xin,varargin),该函数的详细代码见T_tide工具包中的t_tide.m文件。该参数的表达式入下:
[nameu,fu,tidecon,xout]=t_tide(xin,varargin)
其中,输出的函数值包括:
- nameu(char类型),表示各分潮的名称(设分潮个数为Ntides);
- fu为一浮点数向量,包含Ntides个元素,表示各分潮对应的频率;
- tidecon为一浮点数矩阵,包含Ntides×4个元素,每列数字分别表示各分潮的振幅、振幅误差、相位和相位误差;
- xout为一浮点数向量,表示根据调和分析结果计算得出的潮位时间序列。
其输入值包括 xin ——潮位时间序列(一般为列向量)和分析参数varargin;varargin中的参数包括:
- interval:时间序列中,相邻数据的时间间隔(单位:小时);
- start time:时间序列的起始时刻(单位:小时);
- latitude:该时间序列所对应的位置的纬度值(单位为°,以北纬为正),该参数可选填;
- output:分析结果的输出位置(‘none’ - 不显示;‘screen’ - 显示在屏幕上;FILENAME - 输出成某一文件,并给定文件名),该参数可选填,默认为’'screen’;
- prefilt:校正因子,用于潮位时间序列的滤波,该参数可选填;
- secular:在长系列时间序列的分析,用于天文常数的校正(‘mean’ - 假定为常数;‘linear’ - 假定为线性变化),该参数可选填,默认为’'mean’;
- inference:设定inference parameters,需要给定所关联的分潮名称、对应的振幅与相位,该参数可选填;
- shallow:用于设定浅水分潮的名称;
- rayleigh:设定用于分析的分潮名称 [**注意:**可能各个分潮名称的字符数不同,为保持各分潮字符数一致,在输入时可在分潮名后补空格使各名称字符数一致];
- error:用于设定误差的估计方式;
- synthesis:当该值为零,则给出所有设定分潮的分析结果,若该值大于零,则只输出SNR>2的分潮结果,若小于零,输出最小二乘拟合的结果;
- lsq:最小二乘法计算过程的效率参数(‘direct’ - use A\x fit;‘normal’ - use (A’A)(A’x) ;‘best’ - 自动选择最佳参数)。
我们在使用时设定如下指令:
% 此案例中暂不考虑下列参数
infername=[ ];
inferfrom=[ ];
infamp=[];
infphase=[];
% 使用t_tide函数
[tidestruc,pout] = t_tide(elev ,... % time series of tide elevation (a vector)
'interval',1, ... % hourly data
'start',time(1),... % start time; 'time' is the vector of time for the elevation series
'latitude',23,... % Latitude of obs
'rayleigh',['M2 ';'S2 ';'K1 ';'O1 ';'MSF';'M4 '],...
'inference', infername,inferfrom,infamp,infphase,...
'shallow','M10',... % Add a shallow-water constituent
'error','linear',... % coloured boostrap CI
'synthesis',1); % Use SNR=1 for synthesis.
% 输出包含两部分,第一个是tidestruc结构体,它包含了分潮的各项参数;
% 第二是pout,它是根据分析结果推算出的潮位过程。
分析结果
分潮 | 频率 | 振幅 | 振幅误差 | 相位 | 相位误差 | SNR |
---|---|---|---|---|---|---|
MSF | 0.0028 | 0.0182 | 0.0540 | 357.7098 | 170.2116 | 0.1133 |
O1 | 0.0387 | 0.2418 | 0.0131 | 238.5980 | 3.4997 | 342.6091 |
K1 | 0.0418 | 0.2888 | 0.0131 | 290.6858 | 2.7928 | 488.9960 |
M2 | 0.0805 | 0.3204 | 0.0129 | 23.6743 | 2.2449 | 619.7153 |
S2 | 0.0833 | 0.0765 | 0.0129 | 94.0139 | 9.6573 | 35.3121 |
M4 | 0.1610 | 0.0444 | 0.0055 | 169.4662 | 6.8121 | 64.0243 |
M10 | 0.4026 | 0.0016 | 0.0009 | 48.9004 | 27.6618 | 3.3430 |
Pawlowicz R , Beardsley B , Lentz S . Classical tidal harmonic analysis including error estimates in MATLAB using T_TIDE[J]. Computers & Geosciences, 2002, 28(8):929-937. ↩︎