爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 8614|回复: 19

[程序设计] matlab怎么用nc比湿资料做比湿的时间-高度剖面图

[复制链接]

新浪微博达人勋

发表于 2014-7-24 20:45:22 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
matlab怎么用nc比湿资料shum.mon.mean.nc做比湿的时间-高度剖面图,我现在的问题主要是由于nc资料中比湿shum是四维的(包括lon,lat,lev,time)而在读取shum时无法将各个维数分开读取,导致无法将两个维数固定并以time和lev为变量绘制剖面图,向问下各位这个问题怎么解决?想了好多天,查了很多资料,这方面的介绍很少,麻烦各位朋友帮忙解决下?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-7-24 21:01:36 | 显示全部楼层
ncread不就将各个维数分开读取了吗,输出lon*lat*lev*time的矩阵再选取数据不就好了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-7-24 21:02:49 | 显示全部楼层
matlab有一个squeeze函数,可以用来缩小维数。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-7-24 23:16:57 | 显示全部楼层
驍放假了 发表于 2014-7-24 21:02
matlab有一个squeeze函数,可以用来缩小维数。

我试了下,是可以缩小维数,但是怎么一下就缩小了两维,从四维变为了二维。你用matlab做nc的剖面图都是用这个函数吗?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-7-24 23:31:17 | 显示全部楼层
沙颖凯 发表于 2014-7-24 21:01
ncread不就将各个维数分开读取了吗,输出lon*lat*lev*time的矩阵再选取数据不就好了

shum.mon.mean.nc一共5个变量,分别是lon,lat,lev,time,shum。ncread并不是将维数分开,而是分别读取了这五个变量,其中lon,lat,lev,time是一维的,而shum是四维的,用这个命令sh=ncread('f:\shum.mon.mean.nc','uwnd',[1 1 1 1],[1 1 8 5],[1 1 1 1]),固定lon,lat读完数据之后sh依旧是四维的,没法用contourf绘图,我就不知道怎么做了,求教大神
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-7-25 10:43:34 | 显示全部楼层
miqiuqiu123 发表于 2014-7-24 23:31
shum.mon.mean.nc一共5个变量,分别是lon,lat,lev,time,shum。ncread并不是将维数分开,而是分别读取了这 ...

只能说你还没理解什么是剖面图以及什么是等值线。

sh=permute(sh, [3 4 1 2]);
L=ncread('f:\shum.mon.mean.nc', 'level');
T=ncread('f:\shum.mon.mean.nc', 'time');
[time level]=meshgrid(double(L(1:8)), double(T(1:5)));
% Plot
contourf(time, level, sh);
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-7-25 15:09:22 | 显示全部楼层
沙颖凯 发表于 2014-7-25 10:43
只能说你还没理解什么是剖面图以及什么是等值线。

sh=permute(sh, [3 4 1 2]);

f:\1.jpg是的,按你所说的去做可以画出time-level剖面图,但是图很怪异,时间轴带小数的,是不是matlab在处理nc数据的时候对时间值进行了改变?而且高度轴是反的。还有一个想不明白的问题:sh=ncread('f:\shum.mon.mean.nc','shum',[1 1 1 1],[1 1 8 5],[1 1 1 1])这种读法是对的,但是将初始值与结束值改变一下,比如sh=ncread('f:\shum.mon.mean.nc','shum',[5 5 1 1],[5 5 8 5],[1 1 1 1])这种读法就是错的,不知道是什么原因,由于我是初学者,有的问题可能有点无厘头,还希望您能多帮我。

密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-7-25 15:10:21 | 显示全部楼层
f:\1.jpg
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-7-25 15:10:40 | 显示全部楼层
沙颖凯 发表于 2014-7-25 10:43
只能说你还没理解什么是剖面图以及什么是等值线。

sh=permute(sh, [3 4 1 2]);

额,图怎么发不上来
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-7-25 15:11:50 | 显示全部楼层
miqiuqiu123 发表于 2014-7-25 15:09
是的,按你所说的去做可以画出time-level剖面图,但是图很怪异,时间轴带小数的,是不是matlab在处理nc数 ...

这是做出的图
1.jpg
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

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