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