加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

[转载]matlab画风矢量场与位势高度图(contour语法)

(2017-01-16 14:02:33)
标签:

转载

分类: matlab
以下操作均以NCEP的风矢量数据作为演示,有nc数据的信息浏览、读出等操作
调整了下位置。ncdisp挪文章最后了~
%读取所需数据
%注意!我们这里读到的u是四维矩阵,分别是lon*lat*level*time,

clear;clc;
lat=ncread('E:\uwnd.mon.mean.nc','lat');
lon=ncread('E:\uwnd.mon.mean.nc','lon');
U=ncread('E:\uwnd.mon.mean.nc','uwnd');
H=ncread('E:FessaydatadataNCEPhgt.mon.mean.nc','hgt');
H(H==-9.97e+36)=NaN;U(U==3.28e+04)=NaN;               %去空值
%根据研究区截取范围
x=lon(29:57)';
y=lat(14:37)';
[X,Y]=meshgrid(x,y);[n1,n2]=size(X);
%切出所需数据格点
u_850=squeeze(U(29:57,14:37,8,25:end-1));%time需要根据自己的数据下载情况进行节选~
v_850=squeeze(V(29:57,14:37,8,25:end-1));
h_500=squeeze(H(29:57,14:37,6,25:end-1));
%我的数据是月数据,数据第三维就是对应的月份,现在就可以画图了!
%可以下载中国的shp线文件,叠加上去

geoshow('E:国界bou1_4l.shp');
axis equal;
hold on
quiver(X,Y,u_850(:,:,10),drew_v(:,:,10));%随便画个日期的风场图
[C,b]=contour(X,Y,h_500);
set(b,'ShowText','on','TextStep',get(b,'LevelStep'));   %在等高线上叠加数值(文后详情)
colormap Jet  %等高线的颜色分配,我记得有很多,像Pink,Bone什么的~自己选
title('850hPa的风场与500hPa位势高度叠加场')

最后展示一下(咩哈哈哈):
http://s5/mw690/0045Egdrzy6XtEvcoCw04&690

%显示nc数据的信息
ncdisp('E:NCEPuwnd.mon.mean.nc');
%ncinfo我试了下也可以,返回的矩阵中可以分别查看到信息;最笨就是Grads里打开,但是能解决问题都不错
***********以下为系统返回数据****************
%%主要看这几个信息:维度,起始的范围,循环的顺序等

Dimensions:
           level = 17
           lat   = 73
           lon   = 144
           time  = 793   (UNLIMITED)
Variables:
    level
           Size:       17x1
           Dimensions: level
           Datatype:   single
           Attributes:
                       units        = 'millibar'
                       actual_range = [1.00e+03 1.00e+01]
                       axis         = 'Z'
    lat 
           Size:       73x1
           Dimensions: lat
           Datatype:   single
           Attributes:
                       units         = 'degrees_north'
                       actual_range  = [9.00e+01 -9.00e+01]
                       axis          = 'Y'
    lon 
           Size:       144x1
           Dimensions: lon
           Datatype:   single
           Attributes:
                       units         = 'degrees_east'
                       actual_range  = [0.00e+00 3.58e+02]
                       axis          = 'X'
 
    uwnd
           Size:       144x73x17x793
           Dimensions: lon,lat,level,time
           Datatype:   int16
                       units                   = 'm/s'
                       add_offset              = 203
                       scale_factor            = 0.01
                       missing_value           = 3.28e+04
                       precision               = 2

********************结束*********我删了一些********************************************
从中可以看到数据的维度、变量、起始时间等信息

**********************************图文设定************************
set(b,'ShowText','on','TextStep',get(b,'LevelStep'));   是标记出等值线的值,ShowText、TextStep、LevelStep是该对象的属性:
ShowText为on就是显示等高线的值,LevelStep是显示值为m的倍数的等高线(M可以手动也可以默认),TextStep为n就是显示值为n的倍数的等高线的值,后两者配套起来用~

0

  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有