为什么一个人的阅读时间是错误的一年?

4次浏览(最近30天)
当我使用ncread从下面的文件读入数据时,我得到了错误的年份。
url =“http://nomads.ncep.noaa.gov: 9090 /国防部/波/ wna / wna20150804 / wna20150804_00z '
timeFromNetcdf = ncread(url,“时间”);
datestr ([timeFromNetcdf (1) timeFromNetcdf(结束)))
ans =
8月04 - - 2014就是
11 - 8月- 2014 12:00:00
从文件名可以看出,年份实际上是2015年,而不是2014年。我在ncread中做错了什么,也许是由于netcdf中基于零的索引vs. matlab中基于一的索引,或者是netcdf文件中的时间变量完全错误?

接受的答案

凯利卡尼
凯利卡尼 2015年8月6日
编辑:凯利卡尼 2015年8月6日
不,这不是窃听器。Matlab数据数定义为自1月0日起的天数。但如果你看一下时间变量的属性:
> > ncdisp (url,“时间”
来源:
http://nomads.ncep.noaa.gov:9090/dods/wave/wna/wna20150804/wna20150804_00z
格式:
经典
维度:
时间= 61
变量:
时间
大小:61 x1
维度:时间
数据类型:双
属性:
grads_dim =“t”
grads_mapping =“线性”
grads_size =“61”
grads_min =“00 z04aug2015”
grads_step =3人力资源的
单位='自1-1-1 00:00:0.0 . '
long_name =“时间”
最小值=“00 z04aug2015”
最大=“12 z11aug2015”
分辨率= 0.125
你会看到这个变量的参考时间是1月1日0001。正确的转换是
T = ncread(url,“时间”) + datenum(1,1,1);
结束datestr (t ([1]))
ans =
06 - 8月- 2015就是
13 - 8月- 2015 12:00:00
(虽然那里似乎有2天轮班……如果这是基于365天一年的模型数据或类似的东西,那么数据编号可能不是最好的选择)。
2的评论
凯利卡尼
凯利卡尼 2015年8月14日
编辑:凯利卡尼 2015年8月14日
add_offset和scale_factor属性是netCDF数据的通用特征,在文件约定中定义 ncread 是用来寻找这些属性的。
然而,时间维度(或任何维度或变量)的单位属性是完全任意的。你的文件碰巧以天为单位,但也可能是秒、小时、蓝月亮等等……真的没有办法 ncread 知道你想要什么样的转换。

登录评论。

更多答案(1)

罗希特·库
罗希特·库 2015年8月6日
你好,
我执行了你提供的代码,我能够重现这个问题。这似乎是MATLAB中的一个bug。我为MathWorks工作,我已将此反馈转发给相应的产品团队。
——罗希特

标签

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!