Как визуализировать океанологические данные на карте в MATLAB

Сегодня мы рассмотрим несколько готовых рецептов для визуализации океанологических данных. Эта заметка именно с рецептами и не претендует на полноценное руководство, которое для Матлаба существует и достаточно объёмное (около 1000 страниц). Скачать его сегодня (в ноябре 2018 года) можно по ссылке.

В прошлой заметке мы с вами открыли netCDF файл в MATLAB, теперь настало время визуализировать данные на карте. Если в прошлый раз мы выдумали гипотетическое название файла, то сегодня откроем самые настоящие данные. Для примера скачаем файл с температурой поверхности океана (SST) с сайта https://oceancolor.gsfc.nasa.gov/

В нашем файле содержатся среднемесячные значения температуры поверхности воды за сентябрь 2018 года, если хотите точно такой же, то вот ссылка.

Теперь настало время выудить из этого файла данные о температуре:

sst = ncread('A20182442018273.L3m_MO_SST_sst_9km.nc','sst');

Полученную переменную sst легко визуализировать простыми средствами (как вы бы визуализировали любую другую матрицу), например через функцию imagesc:

imagesc(sst)
визуализация данных в MATLAB

Если вас смущает, что матрица "лежит на боку", то можете переориентировать её, написав в командной строке:  

Читать далее «Как визуализировать океанологические данные на карте в MATLAB»

Как открыть netCDF файл в MATLAB

В данной заметке я покажу два способа открыть NetCDF-файл в MATLAB, один способ более продвинутый и более сложный, а второй более простой. 

Несколько лет назад брат написал статью в своём блоге koldunov.net, где показал, как открыть в MATLAB файлы формата netCDF.

Он использовал функцию netcdf и всю процедуру необходимо было выполнять в несколько шагов. Не буду полностью повторять его статью, но вкратце напомню примерный порядок действий.

Для начала нужно открыть netCDF файл, в результате чего в переменную ncid будет записано число, которое будет являеться неким идентификатором, при помощи которого мы сможем вдальнейшем обращаться к нашему файлу:

ncid = netcdf.open('temperature_and_salinity_2018.nc','NC_NOWRITE');

Зная название (информацию о файле можно получить при помощи функции ncdisp) нужной вам переменной (например, температуры) внутри netCDF-файла, определить её ID (который на самом деле является просто порядковым номером переменной внутри файла; счёт начинается с нуля)

varid = netcdf.inqVarID(ncid,'temperature')
varid =

     3

Затем выудить по полученному ID данные для нужной нам характеристики:

data = netcdf.getVar(ncid,3);

Вот и всё, мы открыли наши данные. Но этих процедур часто бывает недостаточно, потому как для уменьшения размеров netCDF файлов прибегают к различного рода хитростям, например приводят все данные к целочисленным значениям и вычитают какое-нибудь число, если все данные больше этого самого числа.

Читать далее «Как открыть netCDF файл в MATLAB»