Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 是否有一种使用时间属性从netcdf文件读取整数时间数据的简单方法?_Matlab_Date_Attributes_Netcdf - Fatal编程技术网

Matlab 是否有一种使用时间属性从netcdf文件读取整数时间数据的简单方法?

Matlab 是否有一种使用时间属性从netcdf文件读取整数时间数据的简单方法?,matlab,date,attributes,netcdf,Matlab,Date,Attributes,Netcdf,我正在尝试使用matlab从netCDF文件中读取时间坐标数据。我有一个netCDF文件(我创建的),它有一个双精度格式的时间变量,对应于从特定时间开始的小时数(见下文) 变量属性: double time(Time) ; time:standard_name = "Time" ; time:units = "hours since 2002-01-01 0:0:0" ; time:calendar = "prole

我正在尝试使用matlab从netCDF文件中读取时间坐标数据。我有一个netCDF文件(我创建的),它有一个双精度格式的时间变量,对应于从特定时间开始的小时数(见下文)

变量属性:

    double time(Time) ;
            time:standard_name = "Time" ;
            time:units = "hours since 2002-01-01 0:0:0" ;
            time:calendar = "proleptic_gregorian" ;
当我使用ncread(ncread)将时间变量读入matlab时,它只打印出一个整数,例如1。但是,如果我使用“ncdump”浏览文件,我会在文件的坐标时间中看到时间变量,例如,2002-01-01

特别是:“ncdump-t-v time ncfile.nc”

我对matlab比较陌生,我想知道是否有人知道是否有类似的,或者同样简单的方法将这个时间变量作为坐标时间读入matlab,或者作为字符串,或者作为数字日期。具体地说,我希望避免解析属性字符串并编写一系列指针和条件来将整数数据转换为实际日期

或者,我应该在这些文件中创建一个新的时间变量,它只是一个日期数组作为字符串吗

非常感谢您提供任何信息!
谢谢

NetCDF将时间存储为与时间的偏移量。从变量属性中,您的历元为2002-01-01 0:0:0,此后的时间为小时。Matlab有一种类似的方法称为日期数,尽管它是基于一个时代以来的天数(他们称之为枢轴年)。您应该研究两个函数:datenum和datestr。第一个将字符串转换为日期编号,另一个将日期编号转换为日期字符串

您可以通过除以24将时间变量转换为兼容的Matlab日期数,然后使用datestr函数对其进行格式化。下面是一个简单的例子:

>> time = [1;2;3;4];
>> datestr(time./24+datenum('2002-01-01 0:0:0'))
ans =
01-Jan-2002 01:00:00
01-Jan-2002 02:00:00
01-Jan-2002 03:00:00
01-Jan-2002 04:00:00
查看与这两个函数相关的Matlab帮助文件,您可以随意格式化日期输出