找回密码
 注册
关于网站域名变更的通知
查看: 2773|回复: 1
打印 上一主题 下一主题

Matlab全球风场图—以ERA5、NCEP和ECMWF再分析数据为例

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-3-3 09:50 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

$ N1 s- }5 k% @  P) _4 d一、matlab读取NCEP再分析数据并绘制风场5 q) Y4 n% P0 h6 b4 {9 N
7 f! L8 v4 p# O: Q8 g0 r
%该程序用于求水汽通量散度+ ?! M$ d" G- P4 Y$ T) l
%注意!我们这里读到的u是四维矩阵,分别是lon*lat*level*time,
+ V5 e7 r9 T& r/ s8 b5 }6 p6 xclc;clear;close all* O2 l' e9 w+ n6 u& T" T5 e
f_hgt = 'ps_level_20170121_0130.nc';. P" T0 r7 Y9 Q1 i" N
% ncdisp(f_hgt);( y+ L' C! N5 g* r
time=ncread(f_hgt,'time');
2 B4 v8 K3 W8 V9 b5 `$ t' glevel=ncread(f_hgt,'level');6 y5 w, b; F8 i# a" e* M: ^/ Z3 W
lon=ncread(f_hgt,'longitude');; W$ Y9 N" h' p, `; t, [
lat=ncread(f_hgt,'latitude');
+ j- ^5 O2 S' a+ W5 }%%%%%%时间转换
) i3 `( v8 I" c' i5 D7 Vtime  = double(time);5 m1 Z) ~; f" K3 q1 |' K& S0 U; M
format = 'mm dd, yyyy HH:MM:SS.FFF AM';%转换格式: @( I$ {2 k4 h6 L
dstr = datestr((datenum('1900-01-01') + time./24),format);%转换后时间字符串存储' g( b+ M+ F! k* S1 x
TM = datevec(dstr);%将时间字符数组转化为数值数组
" O# |# {" v$ \0 T7 B5 R- Mtidx=find(TM(:,2)==1 & TM(:,3)==28 & TM(:,4)==00);%筛选7月25日08时(世界时加8)
$ G# j$ n/ u' H8 K% c" Wps_lev=find(level ==850);%%删选出850hPa高度
: O5 s8 T' B) G+ o& @2 Sstart=[1,1,ps_lev,tidx];%所指定变量的每一维的开始读取的位置
; x6 Y5 O  ], Wcount=[41,31,1,1];%从start指定的开始位置算起,一共读取的每一维要素的数目% }; L, a0 x) l$ R$ |' n* l
strip=[1,1,1,1];%从start开始,每一维读取的数目为count时,每一维的读取的步长
  A# U8 w4 W" F- `. c4 Hhgt=ncread(f_hgt,'z',start,count,strip);%读取温度值,单位K
4 v- K$ O/ x4 Ou=ncread(f_hgt,'u',start,count,strip);%读取温度值,单位K
4 |$ U6 }3 X5 Yv=ncread(f_hgt,'v',start,count,strip);%读取温度值,单位K, V* y0 p! I' o8 o
[X,Y]=meshgrid(lon,lat);6 u2 K+ b6 V5 p$ E! ^
figure(1)
8 @- \3 ], z, B# R( Z0 E9 mm_proj('Mercator','lat',[25,35],'lon',[100,115]);# \# g0 t5 y" T; Z; {& z; d' D
% m_grid('linestyle','none','tickdir','out','fontsize',12,'fontname','Times New Roman');4 Q0 d  Y# `# y) V- {& t
m_grid('linestyle','none','box','fancy','fontsize',11,'tickdir','in','xtick',[100:3:115],'ytick',[25:2:35]);
6 u8 W% t3 q5 A* f% i( U8 o' ohold on
2 k+ `8 z" U) fm_windbarb(X',Y',u,v,'color','k')* B3 ]2 ?3 ~9 E' v9 B" _
%m_coast('patch',[.9 .9 .9],'edgecolor','none');# \# l6 y8 t+ V' `- ?+ z
[C,h]=m_contour(X',Y',hgt/10 ,'color','k','LineWidth',1);%[5000:80:5900]%[1520:25:1680]) E. Z& g( c* o# Q( D% y) F& o
%set(b,'ShowText','on','TextStep',get(b,'LevelStep'),'fontsize',12,'fontname','Times New Roman');   %在等高线上叠加数值(文后详情)7 M/ ~; j) ~8 b
clabel(C,h,'FontSize',13,'fontname','Times New Roman');1 ?5 }- {0 r' e5 f3 S" Y/ r6 d3 h
ma=shaperead('F:/RMeteoInfo/data/map/bou2_4l.shp');
! u( o+ h1 C9 `4 R( \+ B% m_line( [ma(:).X], [ma(:).Y],'color',[0.5,0.5,0.5]);%绘制范围内的地图/ `* H, g; W( n" r' R* |
m_line([ma(:).X],[ma(:).Y],'color','r');%绘制范围内的地图
4 a$ _1 d- k: K; B# P+ e1 Zm_plot(105.5,29.43,'marker','^','MarkerSize',7,'color','k','MarkeRFaceColor','k')0 {# \9 w( [& b4 v
  H( h8 S: \% i" @
- m( ]- ?2 o0 U; S- Q( ]

  W' T( P, V( p  G1 M" ^% d3 K' y- d( g
二、matlab读取ERA5并绘制全球风场图
- w9 T2 j2 N' N  T* U9 @! w: ]! [7 l. A
clc;clear;close all
* C: z- i/ c- E" V' `u0=ncread('202008muwind.nc','uas');    %读取其中一项
8 p4 c' p2 t0 }3 j9 zv0=ncread('202008mvwind.nc','vas');( \0 n+ V+ O( _, P/ `% Y9 i& ^
time0=ncread('202008muwind.nc','time');; S8 w8 Q3 E3 @
lat0=ncread('202008muwind.nc','lat');
8 ?1 S6 A3 [% J5 w& R9 O% tlon0=ncread('202008muwind.nc','lon');      
- v6 ]0 {$ ?  S0 a[lat,lon]=meshgrid(lat0,lon0);/ g- P3 R# F' Q  F1 X  @9 d
u=u0(:,:,2);
9 g' ~9 S4 `. ]( c, {v=v0(:,:,2);/ E. d0 S% R# W% P& E8 b2 |
b=sqrt(u.^2+v.^2);1 [7 N2 N8 t# {4 P" }
figure(1);  ^' W( k' ]) X2 ?
m_proj('Equidistant Cylindrical','long',[-180 180],'lat',[-90 90]);%矩形投影;取区域观察
; t, R) f) Y% s4 q[lon1,lat1]=meshgrid([-180:2.5:179.75],[-90:2.5:90]);
8 J9 t$ g$ X" S9 o: a) E/ O" s- hu2=u(1:10:end,1:10:end)';
* g+ e# z6 T! B+ ?- l) ~% u3=[u2,u2(:,end)];
$ O2 C/ r8 W6 M% _* n, v7 _. J4 m" Av2=v(1:gap:end,1:gap:end)';
4 k$ Z" ?6 ]$ k3 F' A+ q% v3=[v2,v2(:,end)];* N; c. \0 o7 @, D4 U- w% m; \
m_quiver(lon1,lat1,u2,v2,0);
8 \/ f$ L6 l4 i  @# O6 Bhold off
+ p  G# K! N5 Q9 A/ ^* Km_coast('patch',[1 .85 .7]);
2 u' K4 c( L7 ]m_grid('box','on','tickdir','out');
& @) c* q% H% S- ]2 R' V& Z  H" s" \) x

1 d7 D" \( X$ _3 K) w! X8 Y. O' Y  K$ a
# ?# \" r$ b1 `7 @2 f2 F1 |' |6 B; {8 x: q/ V
) V4 H7 q( U9 T2 h/ U4 v
m_contourf(lon,lat,b);%在mmap基础上的画. N+ `( {( S1 ]0 u0 \
shading interp;%使数据插值0 \7 S8 X. {+ @7 `, d: w+ H
hold on;- Z/ g8 W) T$ ]6 z0 G" m
m_quiver(lon1,lat1,u2,v2,0);/ L6 _4 T$ s* |- z2 c8 a7 \4 z
hold off;( t( O  S6 P! D5 J: G

: {8 f4 `6 M  q* {& d  i
. F8 X- I+ z6 u5 Y" I. ?! |; W
% a# ?9 @& R! ]( L* i3 U( o" W+ U9 g' g4 Q! K; X  K9 G$ t! l/ W

: f9 M3 K! ^  s0 H' vm_quiver(lon1,lat1,u2,v2,0);
# Y! n. h# {6 E: I1 ~4 r  P
7 y: B$ R, p+ n: ~5 w0 a ! E9 ^- H: ]" @0 T9 ~: F$ ^
5 e% D9 Q3 W1 G6 k' h) d% G

9 ^  l) y9 M5 r' S8 B
: o8 B! i$ d/ m9 q. S! U  om_contourf(lon,lat,b,500,'linestyle','none')   %在mmap基础上的画
' ~' i- ]1 S, v( M: Rshading interp;  %使数据插值+ q( ^3 Q9 ?4 ]# O; u# a4 ^

5 G( Z. M. `4 \4 _* @. ]& m6 ?/ O+ [" [8 N5 w2 L/ V: a7 Z' f
! J, u) I2 p  a2 y, h

2 l; ^9 @4 F. ?0 S# L' f6 _

该用户从未签到

2#
发表于 2021-3-3 10:52 | 只看该作者
Matlab全球风场图—以ERA5、NCEP和ECMWF再分析数据为例
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-1 00:27 , Processed in 0.156250 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表