在MATLAB上绘制全球海面温度

时间:2015-05-20 14:34:36

标签: matlab plot grib

我试图使用JMA's dataset in GRiB format在MATLAB上绘制2015年4月的全球海面温度。我还安装了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;

我错过了代码中的任何内容吗? latlon 1x3 双数组,而sst 1x33 双数组。

2 个答案:

答案 0 :(得分:0)

我认为问题在于不正确地定义变量和数组大小,因为latlonsst的数组大小彼此不匹配。它与文件问题有关,因为latlon的数组大小太小而无法显示网格化的全局SST数据。

答案 1 :(得分:0)

我不知道这是否会解决你的所有困难,但是double('lat')将 string “lat”转换为double。它总是[108 97 116]。删除引号如下:double(lat)。

同样适用于double(squeeze('Water_temperature_depth_below_sea'))。您希望将变量转换为double,而不是变量的名称