Построение глобальной температуры поверхности моря в MATLAB

Я пытаюсь построить глобальную температуру поверхности моря за апрель 2015 года в MATLAB, используя Набор данных JMA в формате GRiB. Я также установил наборы инструментов nctoolbox и m_map.

Ниже мой код:

!wget http://ds.data.jma.go.jp/tcc/tcc/products/elnino/cobesst/gpvdata/2010-2019/sst201504.grb
nc=ncgeodataset('sst201504.grb')
nc.variables %to check the variable names in this file
lat=double('lat');
lon=double('lon');
sst=double(squeeze('Water_temperature_depth_below_sea'));
m_proj('miller','lat',[min(lat(:)) max(lat(:))],...'lon',[min(lon(:)) max(lon(:))])
m_pcolor(lon,lat,sst);

Однако, когда я использовал функцию m-pcolor, генерируется следующее сообщение об ошибке:

Error using pcolor (line 53)
Color data input must be a matrix.

Error in m_pcolor (line 53)
[h]=pcolor(X,Y,data,varargin{:});

Я все еще могу построить береговую линию и линии сетки, используя следующий код, но без цветных температурных аномалий:

m_coast;
m_grid;

Я что-то пропустил в своем коде? lat и lon — это двойные массивы 1 x 3, а sst – двойные массивы 1 x 33.


person electroniclearner    schedule 20.05.2015    source источник
comment
Взгляните на: mathworks.com /matlabcentral/ответы/   -  person NKN    schedule 20.05.2015
comment
Спасибо за ссылку @NKN. Я подозреваю, что проблема заключается в объявлении и определении переменной «sst». Однако я понятия не имею, как я могу исправить ошибку.   -  person electroniclearner    schedule 21.05.2015
comment
проверьте тип и размер переменной sst и добавьте ее в вопрос.   -  person NKN    schedule 21.05.2015
comment
@NKN Я добавил свойства sst в начальный пост.   -  person electroniclearner    schedule 21.05.2015


Ответы (2)


Я думаю, что проблема заключается в неправильном определении переменных и размеров массивов, так как размеры массивов lat, lon и sst не соответствуют друг другу правильно. Однако это связано с проблемой файла, о чем свидетельствует тот факт, что размеры массивов для lat и lon слишком малы для отображения глобальных данных SST в сетке.

person electroniclearner    schedule 30.05.2015

Я не знаю, решит ли это все ваши трудности, но double('lat') преобразует string "lat" в double. Всегда будет [108 97 116]. Удалите кавычки следующим образом: double(lat).

Аналогично для double(squeeze('Water_temperature_depth_below_sea')). Вы хотите преобразовать переменную в двойную, а не имя переменной.

person Kevin    schedule 16.04.2017