当前位置:网站首页>Matlab实现热带气旋不同风期的风速转换
Matlab实现热带气旋不同风期的风速转换
2022-07-19 16:31:00 【A-Chin】
IBTrACS [点击跳转] 中的热带气旋风速来源于各个机构,风速并不统一;根据WMO出版的《热带气旋不同平均风期之间的转换指引》(《Guidelines for Converting between Various Wind Averaging Periods in Tropical Cyclone Conditions》),这里将各类风速通知转换成10min平均风速,转换关系和参考代码如下:
%%
clc;
clear;
%%
fullpath = mfilename('fullpath');
[path, name] = fileparts(fullpath);
xlsxfile = strcat(path, '/ibtracs.since1980.list.v04r00.xlsx');
%%
[A, T, R] = xlsread(xlsxfile);
%%
SID = R(3 : size(R, 1), 1);
A = A(2 : size(A, 1), :);
WMO_WIND = A(:, 10);
LANDFALL = A(:, 15);
WMO_AGENCY = R(3 : size(R, 1), 13);
USA_WIND = A(:, 23); % 1-minute wind speeds
TOKYO_WIND = A(:, 45); % Maximum sustained wind speed [10-min averaging period]
CMA_WIND = A(:, 57); % Two-minute mean maximum sustained wind
HKO_WIND = A(:, 62);
NEWDELHI_WIND = A(:, 67); % 3-minute
REUNION_WIND = A(:, 75); % 10 minute
BOM_WIND = A(:, 95); % 10-minute
NADI_WIND = A(:, 120); % 10 minute
WELLINGTON_WIND = A(:, 124); % 10-minute
DS824_WIND = A(:, 129);
TD9636_WIND = A(:, 134);
TD9635_WIND = A(:, 138);
NEUMANN_WIND = A(:, 144);
MLC_WIND = A(:, 149);
STORM_SPEED = A(:, 161);
STORM_DIR = A(:, 162);
%%
% in land, V10 / V1 = 1 / 1.21 | at sea, V10 / V1 = 1 / 1.05
% in land, V10 / V2 = 1 / 1.12 | at sea, V10 / V2 = 1 / 1.02
% in land, V10 / V3 = 1 / 1.09 | at sea, V10 / V3 = 1 / 1.00
USA_WIND10 = USA_WIND - USA_WIND;
CMA_WIND10 = CMA_WIND - CMA_WIND;
NEWDELHI_WIND10 = NEWDELHI_WIND - NEWDELHI_WIND;
idx_sea = find(LANDFALL > 0);
idx_land = find(LANDFALL == 0);
% at sea
USA_WIND10(idx_sea) = USA_WIND(idx_sea) / 1.05; % 1min to 10min
CMA_WIND10(idx_sea) = CMA_WIND(idx_sea) / 1.02; % 2min to 10min
NEWDELHI_WIND10(idx_sea) = NEWDELHI_WIND(idx_sea) / 1.00; % 3min to 10min
% in land
USA_WIND10(idx_land) = USA_WIND(idx_land) / 1.21; % 1min to 10min
CMA_WIND10(idx_land) = CMA_WIND(idx_land) / 1.12; % 2min to 10min
NEWDELHI_WIND10(idx_land) = NEWDELHI_WIND(idx_land) / 1.09; % 3min to 10min
%%
uniAGENCY = unique(WMO_AGENCY);
codeAGENCY = zeros(size(WMO_AGENCY));
% codeAGENCY: USA_WIND10 idx_atcf -> 1 | idx_cphc -> 1 | idx_hurdat_atl -> 1 | idx_hurdat_epa -> 1
% codeAGENCY: BOM_WIND idx_bom -> 2
% codeAGENCY: NADI_WIND idx_nadi -> 3
% codeAGENCY: NEWDELHI_WIND10 idx_newdelhi -> 4
% codeAGENCY: REUNION_WIND idx_reunion -> 5
% codeAGENCY: TOKYO_WIND idx_tokyo -> 6
% codeAGENCY: WELLINGTON_WIND idx_wellington -> 7
idx_atcf = find(strcmp(WMO_AGENCY, uniAGENCY(2)));
idx_bom = find(strcmp(WMO_AGENCY, uniAGENCY(3)));
idx_cphc = find(strcmp(WMO_AGENCY, uniAGENCY(4)));
idx_hurdat_atl = find(strcmp(WMO_AGENCY, uniAGENCY(5)));
idx_hurdat_epa = find(strcmp(WMO_AGENCY, uniAGENCY(6)));
idx_nadi = find(strcmp(WMO_AGENCY, uniAGENCY(7)));
idx_newdelhi = find(strcmp(WMO_AGENCY, uniAGENCY(8)));
idx_reunion = find(strcmp(WMO_AGENCY, uniAGENCY(9)));
idx_tokyo = find(strcmp(WMO_AGENCY, uniAGENCY(10)));
idx_wellington = find(strcmp(WMO_AGENCY, uniAGENCY(11)));
codeAGENCY([idx_atcf; idx_cphc; idx_hurdat_atl; idx_hurdat_epa]) = 1;
codeAGENCY(idx_bom) = 2;
codeAGENCY(idx_nadi) = 3;
codeAGENCY(idx_newdelhi) = 4;
codeAGENCY(idx_reunion) = 5;
codeAGENCY(idx_tokyo) = 6;
codeAGENCY(idx_wellington) = 7;
%%
for codi = 1 : 7
idx_curcode = find(codeAGENCY == codi);
curSID = unique(SID(idx_curcode));
for curSIDi = 1 : size(curSID, 1)
[codi curSIDi size(curSID, 1)]
codeAGENCY(find(strcmp(SID, curSID(curSIDi)))) = codi;
end
end
%%
Vmax_10min = zeros(size(codeAGENCY));
Vmax_10min(find(codeAGENCY == 1)) = USA_WIND10(find(codeAGENCY == 1));
Vmax_10min(find(codeAGENCY == 2)) = BOM_WIND(find(codeAGENCY == 2));
Vmax_10min(find(codeAGENCY == 3)) = NADI_WIND(find(codeAGENCY == 3));
Vmax_10min(find(codeAGENCY == 4)) = NEWDELHI_WIND10(find(codeAGENCY == 4));
Vmax_10min(find(codeAGENCY == 5)) = REUNION_WIND(find(codeAGENCY == 5));
Vmax_10min(find(codeAGENCY == 6)) = TOKYO_WIND(find(codeAGENCY == 6));
Vmax_10min(find(codeAGENCY == 7)) = WELLINGTON_WIND(find(codeAGENCY == 7));
%%
% There are the values of codeAGENCY with 0
% Vmax_10min(codeAGENCY == 0) = mean(Vmax1, Vmax2, ..., VmaxN that have transed to V_10min)
all_Vs = [TOKYO_WIND, REUNION_WIND, BOM_WIND, NADI_WIND, WELLINGTON_WIND, USA_WIND10, CMA_WIND10, NEWDELHI_WIND10];
all_V10min = mean(all_Vs, 2, 'omitnan');
%
% OUT = [V10min, STORM_SPEED, STORM_DIR];
outVmax_10min = Vmax_10min;
outVmax_10min(find(codeAGENCY == 0)) = all_V10min(find(codeAGENCY == 0));
outVmax_10min(find(outVmax_10min == 0)) = -1;
outVmax_10min(isnan(outVmax_10min)) = -1;
%%
outpath = strcat(path, '\adj_V10min.since1980.xlsx');
xlswrite(outpath, num2cell(outVmax_10min));
边栏推荐
- docker配置mysql,redis
- 时习知新功能上线啦丨6月有这些新功能上线,你会用了吗?
- Database persistence +jdbc database connection
- After graduating from college in 19 years, I chose software testing after recognizing the truth of life
- asp函数split()对应php函数explode() 字符串变数组
- What if the cell length becomes wider when input appears in the cell?
- Draw sequence diagram with code! It's so cool
- [software testing] how powerful are the new testers brought out in oneortwo months?
- 话实践,行实干,成实事:“巡礼”数字化的中国大地
- 单元格中出现input时,单元格长度变宽怎么办?
猜你喜欢
go-fastDFS 分布式文件系统搭建(实现梳理)
How to choose an open source automated testing framework? You must know these 9 open source tools
关于Visual Code终端乱码问题的解决方案
On the software testing industry -- the correct growth posture of testers
重置电脑后安装MySQL5.7.38及安装缺少msvcp120.dll
离开大厂,去卖保险
Table & Index bloat of PG
软件测试与应用期末复习
光大银行分布式实战:国内最大缴费平台的数据库架构转型
对抗生成网络GAN系列——GAN原理及手写数字生成小案例
随机推荐
《深度学习应用开发》学习笔记汇总(二)
Rambus宣布面向数据中心和PC的DDR5内存接口芯片产品组合
How to set database alarms
Paging storage management mode
【软件测试】一两个月带出来的新测试人员,到底有多厉害?
Cut rope
MySQL migration gold warehouse database primary key, index loss solution
19年大专毕业——认清生活的真相后,我选择了软件测试
cobbler离线安装
用代码画时序图!简直太爽了
cobbler離線安裝
国内开源的一款超好用 Redis 可视化工具,高颜值 UI,真香!!
请问dataworks里面Odps Sql有行数要求嘛,过长会不会报错
项目经验总结——送给测试岗做项目的朋友们
Why is the pay gap between testers and test engineers so large? Three minutes, you get it all
Fix the error reported by the redis connection of the celery configuration under windows (typeerror: _initu () got an unexpected keyword argument)
Solution of webdriver click login failure
性能提升30倍丨基于 DolphinDB 的 mytt 指标库实现
Oracle数据库迁移,还担心执行计划改变吗?
怎么设置数据库的报警