'cdfread'不能读取Matlab中的.cdf文件

3
我无法使用Matlab的 cdfread 函数读取'.cdf'文件。我也尝试了 netcdf 。文件'mvn_lpw_l2_lpnt_20180814_v03_r02.cdf'可以在此处找到:CDF文件
我使用的是Matlab R2015a(版本8.5)。
请给予帮助,谢谢。

cdfinfo函数打印这个文件的什么信息?cdfread报告了什么错误? - Dima Chubarov
如果你能切换到Python,你可以使用cdflib模块来正确处理文件。 - Dima Chubarov
'cdfinfo' 给出以下信息:"使用 cdflibmex 时出错"。 - Mushi
你安装了哪个版本的MATLAB?这个问题似乎缺少一些重要信息,请尝试通过编辑原始帖子添加尽可能多的细节,而不是在评论中添加新信息。您是否可以尝试在MATLAB Answers上使用姜方军提出的命令,并在此处发布输出? - Dima Chubarov
1
我已经阅读了此链接,并且在运行Fangjun Jiang建议的example.cdf命令时一切都正常。这就是为什么我很担心尝试明显的事情后没有找到任何线索。这可能需要一些更深入的知识,这就是为什么我在这里提出这个问题的原因。您可以下载我在帖子中提供的链接文件并告诉我您得到了什么。谢谢。 - Mushi
1个回答

5
为了读取NASA空间物理数据设施(SPDF)中的数据,建议使用SPDF提供的CDF处理库。该版本的库是免费提供的,可以直接从SPDF下载。安装说明非常简单,几乎没有什么需要补充的。
MATLAB自带的cdflib版本不支持MAVEN文件中使用的某些功能。在MATLAB 2017a(9.2.0)上运行MATLAB提供的CDFLIB时,您会得到
>> cdfinfo('mvn_lpw_l2_lpnt_20180814_v03_r02.cdf')
Error using cdflibmex
33 is not a recognized DATATYPE mode.
[... stack trace ...]    

>> data = cdfread('mvn_lpw_l2_lpnt_20180814_v03_r02.cdf')
Error using cdflibmex
33 is not a recognized DATATYPE mode.
[... stack trace ...]    

使用带有SPDF版本的CDF例程,您将获得正确的输出:
>> mvninfo = spdfcdfinfo('mvn_lpw_l2_lpnt_20180814_v03_r02.cdf')

mvninfo = 

  struct with fields:

              Filename: 'mvn_lpw_l2_lpnt_20180814_v03_r02.cdf'
           FileModDate: '01-Jan-2019 03:18:45'
              FileSize: 2579209
                Format: 'CDF'
         FormatVersion: '3.6.3'
          FileSettings: [1×1 struct]
              Subfiles: {}
             Variables: {7×12 cell}
      GlobalAttributes: [1×1 struct]
    VariableAttributes: [1×1 struct]
            LibVersion: '3.7.0'
          PatchVersion: '3.7.0.0'

spdfcdfread 会将数据作为 MATLAB 数组返回。

>> mvndata = spdfcdfread('mvn_lpw_l2_lpnt_20180814_v03_r02.cdf')

mvndata =

  1×7 cell array

  Columns 1 through 3

    [17532×10 single]    [17532×1 double]    [17532×1 double]

  Columns 4 through 6

    [17532×10 single]    [17532×10 single]    [17532×1 single]

  Column 7

    [17532×1 single]

MATLAB CDFLIB函数出现错误的可能原因是MAVEN文件中用于“epoch”变量的TT2000数据类型。
  data       epoch      time_unix    ddata_lo    ddata_up      flag        info  
________    ________    _________    ________    ________    ________    ________

'single'    'tt2000'    'double'     'single'    'single'    'single'    'single'

非常好,非常感谢。 - Mushi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接