Импорт CDF-файлов с использованием высокоуровневых функций

В этом примере показано, как использовать функции MATLAB ® высокого уровня для импорта примера CDF-файла, example.cdf. Функции высокого уровня обеспечивают более простой интерфейс для доступа к 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 данные.

Чтение всех данных из CDF-файла

Используйте 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.

Считайте значения эпох CDF как серийные номера дат

По умолчанию 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               

См. также

|

Внешние веб-сайты