2015-05-20 5 views
0

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

Ниже мой код:

!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); 

Однако, когда я использовал функцию м-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: 1x3 двойные массивы, а sst - 1x33 двойной массив.

+0

Взгляните на: http://www.mathworks.com/matlabcentral/answers/21996-how-to-use-m_pcolor-and-or-pcolorm – NKN

+0

Спасибо за ссылку @NKN. Я подозреваю, что проблема заключается в объявлении и определении переменной sst. Однако я не знаю, как исправить ошибку. – electroniclearner

+0

Проверьте тип и размер переменной 'sst' и добавьте ее в вопрос. – NKN

ответ

0

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

0

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^