В этом примере показано, как использовать функции 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
создает MATLAB cdfepoch
объект для каждого значения эпохи 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