爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 12463|回复: 8

如何用matlab 插值NC数据调整分辨率

[复制链接]

新浪微博达人勋

发表于 2014-5-4 18:40:50 | 显示全部楼层 |阅读模式
MATLAB
问题截图: -
问题概况: 现在有NC数据,想要用Matlab将各个模型插值成统一的分辨率。
我看过提问的智慧: 看过
自己思考时长(天): 3
系统平台:

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

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

x
前两天刚发过一个帖子询问关于将CMIP5中的模式,插值成统一分辨率的方法。经过Aires的指导,初步确定用matlab先读取NC数据后,在进行插值。本来打算进行双线性插值,但是读取数据后,发现那个降水率的数据PrData是三维的[lat,lon,time],数据如下:
1.jpg
所以后来打算用三维差值下看看,程序如下:
PrData  = ncread(filename,'pr');
TimeData  = ncread(filename,'time');
LonData  = ncread(filename,'lon');
LatData  = ncread(filename,'lat');
[xx,yy,zz]=meshgrid(LatData,LonData,TimeData);
[xi,yi,zi]=meshgrid(128:1:135,43:1:48,TimeData);%我只想要得到128~135E,43~48N这个范围的数据~
vi=interp3(xx,yy,zz,PrData,xi,yi,zi);

但是出来的结果是vi都是NaN, 不知道到底是哪里出了问题。

PS:如果想用双线性插值的话,这样的数据要怎么处理。
(因为初步接触这些程序不久,所以好多都不懂,百度和论坛上的资料看了好多,还是很迷茫,希望能有大神解惑~)
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-5-4 18:59:49 | 显示全部楼层
本帖最后由 沙颖凯 于 2014-5-4 19:06 编辑
veronicasyd 发表于 2014-5-4 18:54
好像不是的感觉,改了之后提示:
??? Error using ==> interp3 at 128
Matrices X,Y and Z must be the ...

PrData=permute(PrData, [2 1 3]);
[xx,yy,zz]=meshgrid(LonData,LatData,TimeData);
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 1

使用道具 举报

新浪微博达人勋

发表于 2014-5-4 18:47:12 | 显示全部楼层
改成
[xx,yy,zz]=meshgrid(LonData,LatData,TimeData);
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-5-4 18:54:27 | 显示全部楼层
沙颖凯 发表于 2014-5-4 18:47
改成
[xx,yy,zz]=meshgrid(LonData,LatData,TimeData);

好像不是的感觉,改了之后提示:
??? Error using ==> interp3 at 128
Matrices X,Y and Z must be the same size as V.
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-5-4 19:37:39 | 显示全部楼层
沙颖凯 发表于 2014-5-4 18:59
PrData=permute(PrData, [2 1 3]);
[xx,yy,zz]=meshgrid(LonData,LatData,TimeData);

哇!!成功了。点无数个赞~不过再问个小问题~~如何导出三维数据呢~~导出成Excel是不是有利于之后的分析。。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-5-4 20:04:11 | 显示全部楼层
veronicasyd 发表于 2014-5-4 19:37
哇!!成功了。点无数个赞~不过再问个小问题~~如何导出三维数据呢~~导出成Excel是不是有利于之后的分析。 ...

xlswrite(FILE, ARRAY, SHEET, RANGE)
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-5-4 20:10:38 | 显示全部楼层
沙颖凯 发表于 2014-5-4 20:04
xlswrite(FILE, ARRAY, SHEET, RANGE)

没办法用xls导出,好像是因为是三维的,错误提示:
??? Error using ==> xlswrite at 154
Dimension of input array cannot be higher than two.
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-5-4 20:14:45 | 显示全部楼层
veronicasyd 发表于 2014-5-4 20:10
没办法用xls导出,好像是因为是三维的,错误提示:
??? Error using ==> xlswrite at 154
Dimension of ...

想想也是,不过128*64*1872对EXCEL来讲太大了,感觉要用EXCEL就没有什么好办法了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-5-4 20:18:11 | 显示全部楼层
沙颖凯 发表于 2014-5-4 20:14
想想也是,不过128*64*1872对EXCEL来讲太大了,感觉要用EXCEL就没有什么好办法了

数据在插值的时候只算了,128~135E,43~48N这个范围的数据~所以数据量也不是很大,是6*8*1872~但是就是不知道怎么样导出这样的三维数据~
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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