В этом примере показано, как использовать высокоуровневые функции 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=6×6 cell array
Columns 1 through 5
{'Time' } {[ 1 1]} {[24]} {'epoch' } {'T/' }
{'Longitude' } {[ 2 2]} {[ 1]} {'int8' } {'F/FT' }
{'Latitude' } {[ 2 2]} {[ 1]} {'int8' } {'F/TF' }
{'Data' } {[ 2 2 4]} {[ 1]} {'double'} {'T/TTT' }
{'multidimensional'} {[2 2 3 4]} {[ 1]} {'uint8' } {'T/TTTT'}
{'Temperature' } {[ 3 2]} {[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 23904 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 216 cell
По умолчанию, cdfread
создает массив ячеек с отдельным элементом для каждой переменной и каждой записи в каждой переменной, дополняя размерность записей, чтобы создать прямоугольный массив ячеек. При работе с большими наборами данных можно ускорить операции чтения путем определения 'CombineRecords'
параметр, чтобы уменьшать число элементов в массиве ячеек, что cdfread
возвращается. Когда вы устанавливаете 'CombineRecords'
параметр к true
, cdfread
функция создает отдельный элемент для каждой переменной, но экономит время путем помещения всех записей, сопоставленных с переменной в элементе массива отдельной ячейки.
data_combined = cdfread('example.cdf','CombineRecords',true);
Сравните размеры массивов ячеек, возвращенных cdfread
.
whos data*
Name Size Bytes Class Attributes data 24x6 23904 cell data_combined 1x6 8080 cell
Чтение всех данных из файла в качестве примера без CombineRecords
параметр возвращает 24 6 массив ячеек, где столбцы представляют переменные, и строки представляют записи для каждой переменной. Чтение данных из того же файла с 'CombineRecords'
установите на true
возвращает 1 6 массив ячеек.
При объединении записей, размерностей данных в изменении ячеек. В этом примере, Time
переменная имеет 24 записи, каждая из которых является скалярным значением. В data_combined
массив ячеек, объединенный элемент содержит 24 1 вектор из значений.
По умолчанию, cdfread
создает cdfepoch
MATLAB объект для каждого значения эпохи CDF в файле. Ускорьте операции чтения путем установки аргумента пары "имя-значение" 'ConvertEpochToDatenum'
true
, возвращать значения эпохи CDF как MATLAB последовательные числа даты.
data_datenums = cdfread('example.cdf','ConvertEpochToDatenum',true); whos data*
Name Size Bytes Class Attributes data 24x6 23904 cell data_combined 1x6 8080 cell data_datenums 24x6 19872 cell