当前位置: 首页 > 知识库问答 >
问题:

有没有一种简单的方法可以使用时间属性从 netcdf 文件中读取整数时间数据?

沃博裕
2023-03-14

我正在尝试使用 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) 将时间变量读取到 matlab 中时,它只是打印出一个整数,例如,1。但是,如果我使用“ncdump”浏览文件,我会在其坐标时间中看到时间变量,例如 2002-01-01 01。

具体来说:“ncdump -t -v time ncfile.nc”

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

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

任何信息都非常感谢!谢谢!

共有1个答案

丁毅庵
2023-03-14

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帮助文件,您可以随意设置日期输出的格式。

 类似资料:
  • 在我的课堂上,我们使用方法来计算文本文件中的数据。如果我有一个看起来像这样的文件: 有没有无论如何从文件中提取此数据,然后将其发送到一个方法来计算,然后返回该计算以显示在main上?我很困惑Java如何跳过每一行,计算数字而不是人名。我在考虑使用和。但是,如果我应该将这些文本文件行变量读取为双打,我如何能够设置字符串读取文本文件中的行?抱歉问了你这么多问题我纠结了很久快把我逼疯了

  • 问题内容: 我正在建立一个带有flask的网站,其中用户具有帐户并能够登录。我正在使用flask-principal作为登录部分和角色管理。有没有办法让用户的会话在5分钟或10分钟后过期?我在flask文档或flask-principal文档中找不到该文件。 我想到了一种手动方法,在登录时在服务器端设置一个带有时间标签的变量,并在用户执行下一个操作时,服务器会验证该时间戳记上的时间增量并删除会话。

  • 问题内容: 我正在建立一个带有flask的网站,其中用户具有帐户并能够登录。我正在使用flask- principal作为登录部分和角色管理。有没有办法让用户的会话在5分钟或10分钟后过期?我在flask文档或flask- principal文档中找不到该文件。 我想到了一种手动方法,在登录时在服务器端设置一个带有时间标签的变量,并在用户执行下一个操作时,服务器会验证该时间戳记上的时间增量并删除会

  • 问题内容: 有谁知道我可以使用node.js读取文件元数据的方法吗?对于 例如,我想读的“细节” jpeg格式的选项卡上的“注释”属性 的文件(在Windows计算机上)。 问题答案: 有许多NPM包可用于读取EXIF数据。例如:

  • 问题内容: 我只想在编译时在Java类中使用maven占位符,以减少重复。 像这样: pom.xml SomeVersion.java 问题答案: 只需在src / main / resources中创建具有以下内容的文件app.properties 然后像这样启用Maven过滤 就是这样-在应用程序代码中只需读取属性文件 并提供这样的方法

  • 我有许多坐标(大约20000),我需要从许多NetCDF文件中提取数据,每个文件大约有30000个时间步(未来的气候场景)。使用这里的解决方案效率不高,原因是每个i,j将“dsloc”转换为“dataframe”所花费的时间(请看下面的代码)。**可以从这里下载NetCDF文件示例** 结果是: 这意味着每个i、j需要大约9秒来处理。考虑到大量的坐标和netcdf文件以及大量的时间步长,我想知道是