'cdfread' не читает .cdf файл Matlab - PullRequest
0 голосов
/ 31 декабря 2018

Я не могу читать файлы .cdf, используя функцию Matlab cdfread.Я также пробовал netcdf Файл 'mvn_lpw_l2_lpnt_20180814_v03_r02.cdf' доступен здесь:

CDF-файл

Я использую Matlab R2015a (выпуск 8.5).

Любая помощь, пожалуйста.

1 Ответ

0 голосов
/ 01 января 2019

Для чтения данных из NASA Space Physics Data Facility (SPDF) рекомендуется использовать библиотеку обработки CDF из SPDF.Эта версия библиотеки предоставляется бесплатно и может быть загружена напрямую из SPDF .Инструкции по установке довольно просты, и к ним мало что можно добавить.

Версия cdflib, поставляемая с MATLAB, не поддерживает некоторые функции, используемые в файлах MAVEN.С предоставленной MATLAB CDFLIB, работающей на MATLAB 2017a (9.2.0), вы получите

>> 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 связана с типом данных TT2000, который используется для переменной epoch в файлах MAVEN.

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

'single'    'tt2000'    'double'     'single'    'single'    'single'    'single'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...