Этот пример показывает, как использовать высокоуровневые функции MATLAB®, чтобы импортировать демонстрационный CDF-файл, example.cdf
. Высокоуровневые функции предоставляют более простой интерфейс доступу к CDF-файлам.
Получите информацию о содержимом CDF-файла с помощью функции cdfinfo
. Поскольку cdfinfo
создает временные файлы, гарантируйте, что ваша текущая папка перезаписываема перед использованием функции.
info = cdfinfo('example.cdf')
info = struct with fields:
Filename: 'example.cdf'
FileModDate: '10-May-2010 21:35:01'
FileSize: 1310
Format: 'CDF'
FormatVersion: '2.7.0'
FileSettings: [1x1 struct]
Subfiles: {}
Variables: {6x6 cell}
GlobalAttributes: [1x1 struct]
VariableAttributes: [1x1 struct]
cdfinfo
возвращает структуру, содержащую общую информацию о файле и подробную информацию о переменных и атрибутах в файле. В этом примере поле Variables
указывает на количество переменных в файле.
Просмотрите содержимое поля Variables
.
vars = info.Variables
vars = 6x6 cell array
Columns 1 through 5
{'Time' } {1x2 double} {[24]} {'epoch' } {'T/' }
{'Longitude' } {1x2 double} {[ 1]} {'int8' } {'F/FT' }
{'Latitude' } {1x2 double} {[ 1]} {'int8' } {'F/TF' }
{'Data' } {1x3 double} {[ 1]} {'double'} {'T/TTT' }
{'multidimensional'} {1x4 double} {[ 1]} {'uint8' } {'T/TTTT'}
{'Temperature' } {1x2 double} {[10]} {'int16' } {'T/TT' }
Column 6
{'Full'}
{'Full'}
{'Full'}
{'Full'}
{'Full'}
{'Full'}
Первая переменная, Time
, состоит из 24 записей, содержащих данные эпохи CDF. Следующие две переменные, Longitude
и Latitude
, у каждого есть только одна связанная запись, содержащая данные int8
.
Используйте функцию cdfread
, чтобы считать все данные в CDF-файле.
data = cdfread('example.cdf'); whos data
Name Size Bytes Class Attributes data 24x6 25248 cell
cdfread
возвращает данные в массиве ячеек. Столбцы данных соответствуют переменным. Строки соответствуют записям, сопоставленным с переменной.
Только для чтения Longitude
и переменные Latitude
от CDF-файла. Чтобы считать данные, сопоставленные с конкретными переменными, используйте параметр 'Variable'
. Задайте имена переменных в массиве ячеек из символьных векторов. Имена переменных являются чувствительными к регистру.
var_long_lat = cdfread('example.cdf','Variable',{'Longitude','Latitude'}); whos var_long_lat
Name Size Bytes Class Attributes var_long_lat 1x2 232 cell
По умолчанию cdfread
создает массив ячеек с отдельным элементом для каждой переменной и каждой записи в каждой переменной, дополняя размерность записей, чтобы создать прямоугольный массив ячеек. При работе с большими наборами данных можно ускорить операции чтения путем определения параметра 'CombineRecords'
, чтобы уменьшить число элементов в массиве ячеек, который возвращает cdfread
. Когда вы устанавливаете параметр 'CombineRecords'
на true
, функция cdfread
создает отдельный элемент для каждой переменной, но экономит время путем помещения всех записей, сопоставленных с переменной в элементе массива отдельной ячейки.
data_combined = cdfread('example.cdf','CombineRecords',true);
Сравните размеры массивов ячеек, возвращенных cdfread
.
whos data*
Name Size Bytes Class Attributes data 24x6 25248 cell data_combined 1x6 8320 cell
Чтение всех данных из файла в качестве примера без параметра CombineRecords
возвращает 24 6 массив ячеек, где столбцы представляют переменные, и строки представляют записи для каждой переменной. Чтение данных из того же файла с набором 'CombineRecords'
к true
возвращает 1 6 массив ячеек.
При объединении записей, размерностей данных в изменении ячеек. В этом примере переменная Time
имеет 24 записи, каждая из которых является скалярным значением. В массиве ячеек data_combined
объединенный элемент содержит 24 1 вектор значений.
По умолчанию cdfread
создает объект MATLAB cdfepoch
для каждого значения эпохи CDF в файле. Ускорьте операции чтения путем установки аргумента в виде пар "имя-значение" 'ConvertEpochToDatenum' true
, чтобы возвратить значения эпохи CDF как MATLAB последовательные числа даты.
data_datenums = cdfread('example.cdf','ConvertEpochToDatenum',true); whos data*
Name Size Bytes Class Attributes data 24x6 25248 cell data_combined 1x6 8320 cell data_datenums 24x6 21024 cell