潮位调和分析工具学习(1)——T_tide
潮位调和分析工具学习——T_tide
- 调和分析基本原理
- 潮位调和分析工具 T_tide
- 应用实例
- 数据集
- T_Tide的使用
- 分析结果
在海洋、浅海和海口等水域,潮汐(潮波)现象广泛存在。从潮汐的引发机制上来说,海洋的潮汐涨落与天体引力有密切的关系。天体运行周期各不相同,产生的引潮力也各不相同,这使得潮汐现象十分复杂。但它们共同作用所引起的潮位变化可采用叠加原理——调和分析法来考虑。
更多的相关教程推荐潘海东博士的博客和b站主页。
调和分析基本原理
根据潮波方程的解的线性性质,我们可采用叠加法分析潮位变化,即可将任一潮汐测站的潮位变化表大为
Z(t)=S0+∑j=1JHjcos(σjt+gj)+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)=S0+∑j=1J(ajcosσjt+bjcosσjt)....(2)Z(t) = S_0 + \sum _{j = 1}^{J} (a_j cos \sigma_jt + b_j cos \sigma_jt ) \space .... (2) Z(t)=S0+j=1∑J(ajcosσjt+bjcosσjt) ....(2)
其中
Hj=aj2+bj2,gj=arctan(bjaj)...(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(t1)Z(t2)...Z(tN)]=[1cos(σ1t1)...cos(σJt1)sin(σ1t1)...sin(σJt1)1cos(σ1t2)...cos(σJt2)sin(σ1t2)...sin(σJt2).....................1cos(σ1tN)...cos(σJtN)sin(σ1tN)...sin(σJtN)][S0a1...aJb1...bJ]{\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. ↩︎
潮位调和分析工具学习(1)——T_tide相关推荐
- 潮位调和分析工具学习(2)——使用T_tide时遇到的问题
潮位调和分析工具学习--使用T_tide时遇到的问题 遇到的问题 原因 长期潮位序列调和分析中对迟角度18.61年循环的处理(参考潘海东博士的博客) 遇到的问题 在处理长时间(大于18.61年)的潮位 ...
- 3D游戏设计和创作工具学习教程 3D Game Design Creation Tools
语言:英语+中英文字幕(根据原英文字幕机译更准确) 大小解压后:1.94G 1280X720 mp4 三维游戏设计和创作工具 用扎实的工作流程开始开发游戏 课程获取:3D游戏设计和创作工具学习教程 3 ...
- arcgis怎么压缩tif文件_地理工具学习--arcgis篇:单工具学习(1)
一直以来就想做这个系列.记录学习arcgis.geoda.python.cad等工具的过程. 在arcgis篇,最开始的打算是想把arcgis中的工具都整理一遍,不过经过几年得使用和学习,发现其中有很 ...
- 第八模块:算法设计模式、企业应用 第2章 企业应用工具学习
第八模块:算法&设计模式.企业应用 第2章 企业应用工具学习 转载于:https://www.cnblogs.com/tqtl911/p/9131614.html
- Postman接口测试工具学习笔记(二)Postman进阶实践:获取天气预报实例
Postman接口测试工具学习笔记(一) 入门及基本概念 https://blog.csdn.net/sevensolo/article/details/87208546 Postman进阶实践:获取 ...
- Postman接口测试工具学习笔记(一)接口测试概念及Postman入门
(下文照搬@Storm啊老师博文,留下记录为了方便学习和理解.大家可以去看看原文地址:https://blog.csdn.net/duzilonglove/article/details/786454 ...
- webpack前端构建工具学习总结(一)之webpack安装、创建项目
npm是随nodeJs安装包一起安装的包管理工具,能解决NodeJS代码部署上的很多问题: 常见的使用场景有以下几种: 允许用户从NPM服务器下载别人编写的第三方包到本地使用. 允许用户从NPM服务器 ...
- 通过编写串口助手工具学习MFC过程——(三)Unicode字符集的宽字符和多字节字符转换...
通过编写串口助手工具学习MFC过程 因为以前也做过几次MFC的编程,每次都是项目完成时,MFC基本操作清楚了,但是过好长时间不再接触MFC的项目,再次做MFC的项目时,又要从头开始熟悉.这次通过做一个 ...
- Design Compiler工具学习笔记(7)
目录 引言 背景知识 多时钟设计 DC 输出文件分析 实际操作 设计源码 综合脚本 综合网表 SDF文件 SDC文件 REPORT文件 引言 本篇继续学习 DC的基本使用.本篇主要学习 DC 综合之后 ...
最新文章
- python 高阶函数
- php SQLite mysql_PHP实现的sqlite数据库连接类
- 第二阶段个人总结06
- 一个webpack,react,less,es6的DEMO
- 汽车行驶姿态 -- 初识
- JavaScript 读取CSV文件并转为js对象
- signature=94f3cd0155e1d8c8ff09aa94177adccd,研擬顆粒流與連體數值耦合方法模擬山崩產生之震動訊號...
- java大组件_Java的三大组件
- POJ2373-Dividing the Path【单调队列优化dp】
- 既然参与,那就做好,我相信我们是最棒的!!!
- 工作失职的处理决定_工作失职的处理决定
- tomcat中设置Java 客户端程序的http(https)访问代理
- 在线涂鸦画板小程序源码
- 我的第一个python web开发框架(15)——公司介绍编辑功能
- python和java反射_python实现反射功能
- xfce4快捷键设置
- C++使用Socks5协议进行代理上网(四)
- 华光职业学院计算机专业,关于给予张庆俊等同学省高校计算机一级 考试成绩优秀奖励的通知...
- 周鸿祎带头,十家安全公司接受了这些尖锐拷问
- 苍穹角色对接流程开发
热门文章
- 最好的投资是自己,有关怎样投资自己
- [置顶]记录脑残失误,让达摩克利斯之剑永远高悬
- P2V vCenter Converter Standalone迁移(问题记录)
- 【ES6闯关】Promise堪比原生的自定义封装then、catch、resolve、reject...
- mongodb的id查询
- 《跨语言文本相似性检测》第一周—前期调研
- 华钜同创:各大卖家提前备货万圣节,再不准备就晚啦!
- 创业-2022年五大互联网创业风口
- 南华大学计算机科学学院,计算机科学与技术学院89级校友回校联谊
- 洪荒:不周山上的绝世大能(二)