首页 > 解决方案 > 'cdfread' 不读取 .cdf 文件 Matlab

问题描述

我无法使用 Matlabcdfread函数读取“.cdf”文件。我也试过netcdf文件'mvn_lpw_l2_lpnt_20180814_v03_r02.cdf'可在此处获得:

CDF 文件

我正在使用 Matlab R2015a(8.5 版)。

请提供任何帮助。

标签: matlabcommon-data-format

解决方案


要从 NASA Space Physics Data Facility (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 ...]    

使用 CDF 例程的 SPDF 版本,您将获得正确的输出:

>> 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 函数中错误的一个可能原因来自用于epochMAVEN 文件中的变量的 TT2000 数据类型。

  data       epoch      time_unix    ddata_lo    ddata_up      flag        info  
________    ________    _________    ________    ________    ________    ________

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

推荐阅读