您好,登錄后才能下訂單哦!
小編給大家分享一下matlab如何讀取數據繪制風場,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
一、matlab讀取NCEP再分析數據并繪制風場
%該程序用于求水汽通量散度%注意!我們這里讀到的u是四維矩陣,分別是lon*lat*level*time,clc;clear;close allf_hgt = 'ps_level_20170121_0130.nc';% ncdisp(f_hgt);time=ncread(f_hgt,'time');level=ncread(f_hgt,'level');lon=ncread(f_hgt,'longitude');lat=ncread(f_hgt,'latitude');%%%%%%時間轉換time = double(time);format = 'mm dd, yyyy HH:MM:SS.FFF AM';%轉換格式dstr = datestr((datenum('1900-01-01') + time./24),format);%轉換后時間字符串存儲TM = datevec(dstr);%將時間字符數組轉化為數值數組tidx=find(TM(:,2)==1 & TM(:,3)==28 & TM(:,4)==00);%篩選7月25日08時(世界時加8)ps_lev=find(level ==850);%%刪選出850hPa高度start=[1,1,ps_lev,tidx];%所指定變量的每一維的開始讀取的位置count=[41,31,1,1];%從start指定的開始位置算起,一共讀取的每一維要素的數目strip=[1,1,1,1];%從start開始,每一維讀取的數目為count時,每一維的讀取的步長hgt=ncread(f_hgt,'z',start,count,strip);%讀取溫度值,單位Ku=ncread(f_hgt,'u',start,count,strip);%讀取溫度值,單位Kv=ncread(f_hgt,'v',start,count,strip);%讀取溫度值,單位K[X,Y]=meshgrid(lon,lat);figure(1)m_proj('Mercator','lat',[25,35],'lon',[100,115]);% m_grid('linestyle','none','tickdir','out','fontsize',12,'fontname','Times New Roman');m_grid('linestyle','none','box','fancy','fontsize',11,'tickdir','in','xtick',[100:3:115],'ytick',[25:2:35]);hold onm_windbarb(X',Y',u,v,'color','k')%m_coast('patch',[.9 .9 .9],'edgecolor','none');[C,h]=m_contour(X',Y',hgt/10 ,'color','k','LineWidth',1);%[5000:80:5900]%[1520:25:1680]%set(b,'ShowText','on','TextStep',get(b,'LevelStep'),'fontsize',12,'fontname','Times New Roman'); %在等高線上疊加數值(文后詳情)clabel(C,h,'FontSize',13,'fontname','Times New Roman');ma=shaperead('F:/RMeteoInfo/data/map/bou2_4l.shp'); % m_line( [ma(:).X], [ma(:).Y],'color',[0.5,0.5,0.5]);%繪制范圍內的地圖m_line([ma(:).X],[ma(:).Y],'color','r');%繪制范圍內的地圖m_plot(105.5,29.43,'marker','^','MarkerSize',7,'color','k','MarkerFaceColor','k')
二、matlab讀取ERA5并繪制全球風場圖
clc;clear;close allu0=ncread('202008muwind.nc','uas'); %讀取其中一項v0=ncread('202008mvwind.nc','vas');time0=ncread('202008muwind.nc','time');lat0=ncread('202008muwind.nc','lat');lon0=ncread('202008muwind.nc','lon'); [lat,lon]=meshgrid(lat0,lon0);u=u0(:,:,2);v=v0(:,:,2);b=sqrt(u.^2+v.^2);figure(1);m_proj('Equidistant Cylindrical','long',[-180 180],'lat',[-90 90]);%矩形投影;取區域觀察[lon1,lat1]=meshgrid([-180:2.5:179.75],[-90:2.5:90]);u2=u(1:10:end,1:10:end)';% u3=[u2,u2(:,end)];v2=v(1:gap:end,1:gap:end)';% v3=[v2,v2(:,end)];m_quiver(lon1,lat1,u2,v2,0);hold offm_coast('patch',[1 .85 .7]);m_grid('box','on','tickdir','out');
m_contourf(lon,lat,b);%在mmap基礎上的畫shading interp;%使數據插值hold on;m_quiver(lon1,lat1,u2,v2,0);hold off;
m_quiver(lon1,lat1,u2,v2,0);
m_contourf(lon,lat,b,500,'linestyle','none') %在mmap基礎上的畫shading interp; %使數據插值
看完了這篇文章,相信你對“matlab如何讀取數據繪制風場”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。