我试图使用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;
我错过了代码中的任何内容吗? lat
和lon
是 1x3 双数组,而sst
是 1x33 双数组。
答案 0 :(得分:0)
我认为问题在于不正确地定义变量和数组大小,因为lat
,lon
和sst
的数组大小彼此不匹配。它与文件问题有关,因为lat
和lon
的数组大小太小而无法显示网格化的全局SST数据。
答案 1 :(得分:0)
我不知道这是否会解决你的所有困难,但是double('lat')将 string “lat”转换为double。它总是[108 97 116]。删除引号如下:double(lat)。
同样适用于double(squeeze('Water_temperature_depth_below_sea'))。您希望将变量转换为double,而不是变量的名称。