Считайте данные из файла NetCDF с помощью высокоуровневых функций, и затем считайте файл при помощи netcdf
низкоуровневые функции пакета.
Сетевая Форма Общих данных (NETCDF) является набором библиотек программного обеспечения и машинно-независимых форматов данных, которые поддерживают создание, доступ и совместное использование ориентированных на массив научных данных. NetCDF используется широким спектром технических и научных полей, которые хотят стандартный способ хранить данные так, чтобы это могло быть совместно использовано.
MATLAB® высокоуровневые функции упрощают процесс импортирования данных из файла NetCDF или источника данных OPeNDAP NetCDF. Низкоуровневые функции MATLAB включают больше управления процессом импорта путем обеспечения доступа к стандартным программам в библиотеке NetCDF C. Чтобы использовать низкоуровневые функции эффективно, необходимо быть знакомы с Интерфейсом C NetCDF. Документация NetCDF доступна в веб-сайте Unidata.
Примечание
Для получения информации об импорте файлов Формата общих данных (CDF), которые имеют отдельный, несовместимый формат, смотрите Импорт файлов CDF с использованием низкоуровневых функций.
Это настоятельно рекомендовано это, вы связываете только с доверяемыми серверами OPeNDAP. В R2020b интерфейс MATLAB NetCDF соединяется только с доверяемыми конечными точками протокола доступа к данным (DAP) по умолчанию путем выполнения сертификата сервера и валидаций имени хоста. Ранее, когда вы получали доступ к серверу OPeNDAP, и сертификат сервера и валидация имени хоста были отключены по умолчанию.
Если требуется отключить сертификат сервера и валидацию имени хоста, добавьте следующую линию в .dodsrc
файл в текущем каталоге:
[mylocaltestserver.lab] HTTP.SSL.VALIDATE=0
Это заставляет интерфейс MATLAB NetCDF связать с сервером OPeNDAP, имя которого задано в URI mylocaltestserver.lab
не выполняя валидаций на сертификате сервера или имени хоста. Это изменение сохраняется в будущих сеансах работы с MATLAB. Для получения дополнительной информации об аутентификации сервера OPeNDAP и валидации имени хоста, смотрите Поддержку Авторизации NetCDF.
В этом примере показано, как отобразить и считать содержимое файла NetCDF, с помощью высокоуровневых функций.
Отобразите содержимое демонстрационного файла NetCDF, example.nc
.
ncdisp('example.nc')
Source: \\matlabroot\toolbox\matlab\demos\example.nc Format: netcdf4 Global Attributes: creation_date = '29-Mar-2010' Dimensions: x = 50 y = 50 z = 5 Variables: avagadros_number Size: 1x1 Dimensions: Datatype: double Attributes: description = 'this variable has no dimensions' temperature Size: 50x1 Dimensions: x Datatype: int16 Attributes: scale_factor = 1.8 add_offset = 32 units = 'degrees_fahrenheight' peaks Size: 50x50 Dimensions: x,y Datatype: int16 Attributes: description = 'z = peaks(50);' Groups: /grid1/ Attributes: description = 'This is a group attribute.' Dimensions: x = 360 y = 180 time = 0 (UNLIMITED) Variables: temp Size: [] Dimensions: x,y,time Datatype: int16 /grid2/ Attributes: description = 'This is another group attribute.' Dimensions: x = 360 y = 180 time = 0 (UNLIMITED) Variables: temp Size: [] Dimensions: x,y,time Datatype: int16
ncdisp
отображения все группы, размерности и определения переменной в файле. Неограниченные размерности идентифицированы с меткой, UNLIMITED
.
Считайте данные из peaks
переменная.
peaksData = ncread('example.nc','peaks');
Отобразите информацию о peaksData
вывод .
whos peaksData
Name Size Bytes Class Attributes peaksData 50x50 5000 int16
Считайте description
атрибут сопоставлен с переменной.
peaksDesc = ncreadatt('example.nc','peaks','description')
peaksDesc = z = peaks(50);
Создайте 3D объемную поверхностную диаграмму переменных данных. Используйте значение description
припишите как заголовок фигуры.
surf(double(peaksData)) title(peaksDesc);
Считайте description
атрибут сопоставлен с /grid1/
группа. Задайте название группы как второй вход к ncreadatt
функция.
g = ncreadatt('example.nc','/grid1/','description')
g = This is a group attribute.
Считайте глобальный атрибут, creation_date
. Для глобальных атрибутов задайте второй входной параметр к ncreadatt
как '/'
.
creation_date = ncreadatt('example.nc','/','creation_date')
creation_date = 29-Mar-2010
В этом примере показано, как найти все неограниченные размерности в группе в файле NetCDF, с помощью высокоуровневых функций.
Получите информацию о /grid2/
группа в файле примера, example.nc
, использование ncinfo
функция.
ginfo = ncinfo('example.nc','/grid2/')
ginfo = Filename: '\\matlabroot\toolbox\matlab\demos\example.nc' Name: 'grid2' Dimensions: [1x3 struct] Variables: [1x1 struct] Attributes: [1x1 struct] Groups: [] Format: 'netcdf4'
ncinfo
возвращает массив структур, содержащий информацию о группе.
Получите вектор из булевых значений, которые указывают на неограниченные размерности для этой группы.
unlimDims = [ginfo.Dimensions.Unlimited]
unlimDims = 0 0 1
Используйте unlimDims
вектор, чтобы отобразить неограниченную размерность.
disp(ginfo.Dimensions(unlimDims))
Name: 'time' Length: 0 Unlimited: 1
В этом примере показано, как получить информацию о размерностях, переменных и атрибутах в файле NetCDF с помощью низкоуровневых функций MATLAB в netcdf
пакет. Чтобы использовать эти функции эффективно, необходимо быть знакомы с Интерфейсом C NetCDF.
Откройте файл NetCDF
Откройте демонстрационный файл NetCDF, example.nc
, использование netcdf.open
функция, с доступом только для чтения.
ncid = netcdf.open('example.nc','NC_NOWRITE')
ncid = 65536
netcdf.open
возвращает идентификатор файла.
Получение информации о файле NetCDF
Получите информацию о содержимом файла с помощью netcdf.inq
функция. Эта функция соответствует nc_inq
функция в API библиотеки NetCDF C.
[ndims,nvars,natts,unlimdimID] = netcdf.inq(ncid)
ndims = 3
nvars = 3
natts = 1
unlimdimID = -1
netcdf.inq
возвращает количество размерностей, переменных и глобальных атрибутов в файле, и возвращает идентификатор неограниченной размерности в файле. Неограниченная размерность может вырасти.
Получите имя глобального атрибута в файле с помощью netcdf.inqAttName
функция. Эта функция соответствует nc_inq_attname
функция в API библиотеки NetCDF C. Чтобы получить имя атрибута, необходимо задать ID переменной, атрибут сопоставлен с и номер атрибута. Чтобы получить доступ к глобальному атрибуту, который не сопоставлен с конкретной переменной, используют постоянный 'NC_GLOBAL'
как идентификатор переменной.
global_att_name = netcdf.inqAttName(ncid,... netcdf.getConstant('NC_GLOBAL'),0)
global_att_name = 'creation_date'
Получите информацию о типе данных и длине атрибута с помощью netcdf.inqAtt
функция. Эта функция соответствует nc_inq_att
функция в API библиотеки NetCDF C. Снова, задайте идентификатор переменной с помощью netcdf.getConstant('NC_GLOBAL')
.
[xtype,attlen] = netcdf.inqAtt(ncid,... netcdf.getConstant('NC_GLOBAL'),global_att_name)
xtype = 2
attlen = 11
Получите значение атрибута, с помощью netcdf.getAtt
функция.
global_att_value = netcdf.getAtt(ncid,... netcdf.getConstant('NC_GLOBAL'),global_att_name)
global_att_value = '29-Mar-2010'
Получите информацию о первой размерности в файле, с помощью netcdf.inqDim
функция. Эта функция соответствует nc_inq_dim
функция в API библиотеки NetCDF C. Второй вход к netcdf.inqDim
ID размерности, который является основанным на нуле индексом, который идентифицирует размерность. Первая размерность имеет значение индекса 0
.
[dimname,dimlen] = netcdf.inqDim(ncid,0)
dimname = 'x'
dimlen = 50
netcdf.inqDim
возвращает имя и длину размерности.
Получите информацию о первой переменной в файле с помощью netcdf.inqVar
функция. Эта функция соответствует nc_inq_var
функция в API библиотеки NetCDF C. Второй вход к netcdf.inqVar
идентификатор переменной, который является основанным на нуле индексом, который идентифицирует переменную. Первая переменная имеет значение индекса 0
.
[varname,vartype,dimids,natts] = netcdf.inqVar(ncid,0)
varname = 'avagadros_number'
vartype = 6
dimids = []
natts = 1
netcdf.inqVar
возвращает имя, тип данных, ID размерности и количество атрибутов, сопоставленных с переменной. Информация о типе данных возвращена в vartype
числовое значение констант типа данных NetCDF, такой как, NC_INT
и NC_BYTE
. См. документацию NetCDF для получения информации об этих константах.
Считайте данные из файла NetCDF
Считайте данные, сопоставленные с переменной, avagadros_number
, в файле в качестве примера, с помощью netcdf.getVar
функция. Второй вход к netcdf.getVar
идентификатор переменной, который является основанным на нуле индексом, который идентифицирует переменную. avagadros_number
переменная имеет значение индекса 0
.
A_number = netcdf.getVar(ncid,0)
A_number = 6.0221e+23
Просмотрите тип данных A_number
.
whos A_number
Name Size Bytes Class Attributes A_number 1x1 8 double
Функции в netcdf
пакет автоматически выбирает класс MATLAB, что лучшие соответствия тип данных NetCDF, но можно также задать класс данных о возврате при помощи дополнительного аргумента к netcdf.getVar
.
Считайте данные, сопоставленные с avagadros_number
и возвратите данные как класс single
.
A_number = netcdf.getVar(ncid,0,'single'); whos A_number
Name Size Bytes Class Attributes A_number 1x1 4 single
Закройте файл NetCDF
Закройте файл NetCDF, example.nc
.
netcdf.close(ncid)
ncread
| ncreadatt
| ncdisp
| ncinfo