失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Matlab实现Holland风场

Matlab实现Holland风场

时间:2020-06-04 13:14:17

相关推荐

Matlab实现Holland风场

更新:

仅使用Matlab实现Holland圆对称风场,不考虑热带气旋的移动速度和前进方位角。

主要的参数设定:

生成0.25°分辨率的风场:

附Matlab代码:

其中,basetif.tif是一个0.25°的影像

中心经纬度以及中心气压:

Pc=995hPaP_c = 995 hPaPc​=995hPa

Latc=10.125°Lat_c = 10.125 °Latc​=10.125°

Lonc=120.125°Lon_c = 120.125 °Lonc​=120.125°

%%clc;clear;%%fullpath = mfilename('fullpath');[path, name] = fileparts(fullpath);%%%basetif = strcat(path, '\basetif.tif');[A_M, R_M] = geotiffread(basetif);info = geotiffinfo(basetif);A_I = zeros(size(A_M));A_J = zeros(size(A_M));for i = 1 : size(A_I, 1)A_I(i, :) = i;endfor j = 1 : size(A_J, 2)A_J(:, j) = j;end[A_Lat, A_Lon] = pix2latlon(info.RefMatrix, A_I, A_J);%%P_c = 995; % hPaLat_c = 10.125; % °Lon_c = 120.125; % °%%%rou_air = 1.15; % kg m-3%P_n = 1010.0;dertP = P_n - P_c;Rm = -18.18 * log(dertP) + 112.2; % R2 = 0.84B = 1.881 - 0.00557 * Rm - 0.01295 * abs(Lat_c);f = 2 * 7.292 * 0.00001 * sin(Lat_c * pi / 180.0);% great cricle arcR_earth = 6371;arcLAT1 = A_Lat * pi / 180.0;arcLAT2 = Lat_c * pi / 180.0;arcLON1 = A_Lon * pi / 180.0;arcLON2 = Lon_c * pi / 180.0;cos_sita = sin(arcLAT1) .* sin(arcLAT2) + ...cos(arcLAT1) .* cos(arcLAT2) .* cos(arcLON1 - arcLON2);sita = acos(cos_sita);r = R_earth * sita + 0.001;P_r = P_c + dertP * exp(-(Rm ./ r) .^ B);Vg_Holland1 = 100 * dertP * B / rou_air * (Rm ./ r) .^ B .* exp(-(Rm ./ r) .^ B);Vg_Holland2 = r * abs(f) / 2 * 1000;Vg_Holland = (Vg_Holland1 + Vg_Holland2 .^ 2) .^ 0.5 - Vg_Holland2;%%Vg = Vg_Holland;Km = zeros(size(Vg_Holland));Km(Vg < 6) = 0.81;Km(Vg >= 6 & Vg < 19.5) = 0.81 - 2.96 * 10 ^ (-3) * (Vg(Vg >= 6 & Vg < 19.5) - 6);Km(Vg >= 19.5 & Vg < 45) = 0.77 - 4.31 * 10 ^ (-3) * (Vg(Vg >= 19.5 & Vg < 45) - 19.5);Km(Vg >= 45) = 0.66;V_10m = Km .* Vg;outfile = strcat(path, '\V_10m.tif');geotiffwrite(outfile, single(V_10m), R_M);

如果觉得《Matlab实现Holland风场》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。