Добавить в корзинуПозвонить
Найти в Дзене
Алексей Колдунов

Строим вертикальные профили солёности и температуры воды в MATLAB

Сегодня мы построим графики распределения значений солёности и температуры воды по глубине средствами MATLAB. Работать мы будем с данными World Ocean Atlas 2013 V2. Вместо того, чтобы скачивать .nc файлы целиком, для удобства загрузим с сервера только нужные нам переменные. Делается это при помощи протокола OPENDAP. t_global = ncread('https://data.nodc.noaa.gov/thredds/dodsC/woa/WOA13/DATAv2/temperature/netcdf/decav/1.00/woa13_decav_t00_01v2.nc','t_an');
lat = ncread('https://data.nodc.noaa.gov/thredds/dodsC/woa/WOA13/DATAv2/temperature/netcdf/decav/1.00/woa13_decav_t00_01v2.nc','lat');
lon = ncread('https://data.nodc.noaa.gov/thredds/dodsC/woa/WOA13/DATAv2/temperature/netcdf/decav/1.00/woa13_decav_t00_01v2.nc','lon');
z = ncread('https://data.nodc.noaa.gov/thredds/dodsC/woa/WOA13/DATAv2/temperature/netcdf/decav/1.00/woa13_decav_t00_01v2.nc','depth');
s_global = ncread('https://data.nodc.noaa.gov/thredds/dodsC/woa/WOA13/DATAv2/salinity/netcdf/decav/1.00/woa13_decav_s00_01v2.nc', 's_an'

Сегодня мы построим графики распределения значений солёности и температуры воды по глубине средствами MATLAB.

Работать мы будем с данными World Ocean Atlas 2013 V2. Вместо того, чтобы скачивать .nc файлы целиком, для удобства загрузим с сервера только нужные нам переменные. Делается это при помощи протокола OPENDAP.

t_global = ncread('https://data.nodc.noaa.gov/thredds/dodsC/woa/WOA13/DATAv2/temperature/netcdf/decav/1.00/woa13_decav_t00_01v2.nc','t_an');
lat = ncread('https://data.nodc.noaa.gov/thredds/dodsC/woa/WOA13/DATAv2/temperature/netcdf/decav/1.00/woa13_decav_t00_01v2.nc','lat');
lon = ncread('https://data.nodc.noaa.gov/thredds/dodsC/woa/WOA13/DATAv2/temperature/netcdf/decav/1.00/woa13_decav_t00_01v2.nc','lon');
z = ncread('https://data.nodc.noaa.gov/thredds/dodsC/woa/WOA13/DATAv2/temperature/netcdf/decav/1.00/woa13_decav_t00_01v2.nc','depth');
s_global = ncread('https://data.nodc.noaa.gov/thredds/dodsC/woa/WOA13/DATAv2/salinity/netcdf/decav/1.00/woa13_decav_s00_01v2.nc', 's_an');

Подробно и с комментариями по поводу кода, как всегда можно почитать здесь.

Окончательный код выглядит так:

plot(t,-z,'.r','linewidth',2)
grid on
ylabel 'Depth (m)'
xlabel 'Temperature ({\circ}C)'
set(gca,'XColor','r','box','off','XLim',[-2.5 2.5])
gp = get(gca,'pos');
axes('pos',gp,'color','none','XAxisLocation','top',...
'XColor','b','XLim',[31 36]);
hold on
plot(s,-z,'.b','linewidth',2)
grid on
set(gca,'GridColor','k')
xlabel('Salinity')

И строит он вот такую картинку:

-2