Для чтения данных из 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'