В этом примере показано, как использовать функции 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