0

我正在尝试使用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并且lon1x3双精度数组,而sst1x33双精度数组。

4

2 回答 2

0

I think the problem lies in improperly defining the variables and array sizes, as the array sizes of lat, lon and sst do not match each other correctly. It has to do with the file problem though, as evident from the fact that the array sizes for lat and lon are too small to display gridded global SST data.

于 2015-05-30T10:00:31.043 回答
0

我不知道这是否能解决你所有的困难,但 double('lat') 正在将字符串“lat”转换为双精度。它将始终为 [108 97 116]。像这样删除引号:double(lat)。

对于 double(squeeze('Water_temperature_depth_below_sea')) 也是如此。您想将变量转换为双精度,而不是变量的名称

于 2017-04-16T04:52:57.667 回答