爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
楼主: Aires

[程序设计] Matlab读取nc文件常用命令总结

  [复制链接]

新浪微博达人勋

发表于 2016-1-9 18:29:13 | 显示全部楼层
Aires 发表于 2016-1-9 17:23
你这两个矩阵大小都不一样当然报错啦,你要根据你的需要提取相同大小矩阵才能求和啊

那问题是,我就只是想计算冬季的1,2,12月啊 所以分别求了和之后,进行累加的。难不成要1个月1个月的读取?然后再求和?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-1-10 11:18:28 | 显示全部楼层
WEN 发表于 2016-1-9 18:29
那问题是,我就只是想计算冬季的1,2,12月啊 所以分别求了和之后,进行累加的。难不成要1个月1个月的读取 ...

我不太明白你的意思,但我猜你是想挑出来的话要用到:吧,比如:1:2:5,表示挑出来1,3,5这三个月
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-1-11 08:55:58 | 显示全部楼层
Aires 发表于 2016-1-10 11:18
我不太明白你的意思,但我猜你是想挑出来的话要用到:吧,比如:1:2:5,表示挑出来1,3,5这三个月

prec2010JF= prec2010_single(:,:,1:59);    %2010年1,2月降水
prec2010D= prec2010_single(:,:,335:365); %2010年12月降水
prec = prec2010JF+prec2010D  %求和

楼主,只是想算这一年冬季月份的降水量之和,要怎么算? 程序如上吗?还是说逐月的计算,求和呢?像下面那样?
prec2010J= prec2010_single(:,:,1:31);    %2010年1月降水
prec2010F= prec2010_single(:,:,32:59);    %2010年2月降水
prec2010D= prec2010_single(:,:,335:365); %2010年12月降水
prec = prec2010J+prec2010F+prec2010D  %求和

要求的是不连续的几个月份的降水呢,不知道要如何修改?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-1-11 12:53:05 | 显示全部楼层
WEN 发表于 2016-1-11 08:55
prec2010JF= prec2010_single(:,:,1:59);    %2010年1,2月降水
prec2010D= prec2010_single(:,:,335:36 ...

这个没啥办法吧,单独逐月提取出来吧
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-1-11 13:24:04 | 显示全部楼层
Aires 发表于 2016-1-11 12:53
这个没啥办法吧,单独逐月提取出来吧

en,逐月求,每个文件的天数也不完全一样。   不过,我已经用sum命令解决这个问题啦!  谢谢楼主!楼主好人!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-1-13 11:39:39 | 显示全部楼层
前辈您好,这里是一个MATLAB初学者一枚,后辈在读了您所写的帖子之后有所收获,但是还是有些不懂之处,可以向您请教一些经验吗,
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-1-19 17:20:08 | 显示全部楼层
大家好,我想用读取nc文件里的一个4维的变量temperature(lon,lat,z,time)的一部分数据,所用命令如下:
temp=ncread('new.nc','temperature',[50 50 1 1],[100 100 40 12],[1 1 1 1]);
但MATLAB报错说Error using ncread Too many input arguments.

我用过ncdisp,temperature是一个360*180*40*12的变量。请问大家知道为什么会出现这种情况呢?有时nc文件里的变量太大,我只想读取其一部分,希望各位同学老师看到可以帮忙解答一下,小弟万分感谢!!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-1-19 18:41:53 | 显示全部楼层
evansam 发表于 2016-1-19 17:20
大家好,我想用读取nc文件里的一个4维的变量temperature(lon,lat,z,time)的一部分数据,所用命令如下:
t ...

看着应该没错啊,再检查下你Matlab版本的ncread是不是这么用,也许是版本不同的问题,最后一个[1 1 1 1]可以不写,是默认的。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-1-19 22:14:25 | 显示全部楼层
Aires 发表于 2016-1-19 18:41
看着应该没错啊,再检查下你Matlab版本的ncread是不是这么用,也许是版本不同的问题,最后一个[1 1 1 1] ...

感谢你的回复!
我这个MATLAB版本是2014b,doc ncread也很清楚有这样的用法。。但还是too many  input  argument ...
即使最后一个[1 1 1 1]没写。。。
暂时还是不太清楚为什么会这样。。。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-1-19 22:32:20 | 显示全部楼层
evansam 发表于 2016-1-19 22:14
感谢你的回复!
我这个MATLAB版本是2014b,doc ncread也很清楚有这样的用法。。但还是too many  input   ...

那就不清楚了,看着应该是没错的
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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