我试图用GRiB格式的JMA数据集在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双数组。
发布于 2015-05-30 10:00:31
我认为问题在于不正确地定义变量和数组大小,因为lat、lon和sst的数组大小不匹配。不过,这与文件问题有关,因为lat和lon的数组大小太小,无法显示网格化的全局SST数据。
发布于 2017-04-16 04:52:57
我不知道这是否能解决你所有的困难,但是double('lat')正在将字符串"lat“转换为double。永远是108 97 116。删除这样的引号: double(lat)。
同样适用于double(squeeze('Water_temperature_depth_below_sea')).您希望将变量转换为双倍,而不是变量的名称。
https://stackoverflow.com/questions/30352785
复制相似问题