1

我发现当尝试使用 Matlab 和 ncread 通过 OPeNDAP 访问大(ish)数组时,结果在某个数组大小限制处返回全零。
我试图弄清楚这是 Matlab/ncread 限制还是 OPeNDAP 问题。

我正在通过 Matlab 的函数 访问通过OPeNDAP(确切地说是 GrADS-DODS)提供的数据集。ncread

  • 如果我选择整个数组,即 192 x 94 x 58676(经度、纬度、时间),ncread不会引发错误,但结果数组全为零。

  • 例如,如果我对前 25,000 次进行子集化,则它可以正常工作。我怀疑有 2GB 的限制,但想确认一下。没有错误,而是返回零似乎也很奇怪。

% matlab R2018b 64-bit (maci64)

URL = 'http://apdrc.soest.hawaii.edu:80/dods/public_data/Reanalysis_Data/NCEP/NCEP2/6_hourly/gaussian_grid/uwnd_10m';

lat = ncread(URL,'lat');

lon = ncread(URL,'lon');

% this returns valid data

uwind = ncread(URL,'uwnd_10m',[1 1 1],[Inf Inf 29746]);

% this returns all zeros

uwind = ncread(URL,'uwnd_10m',[1 1 1],[Inf Inf 29747]);

% as does this (note there are 192x94x58676 values)

uwind = ncread(URL,'uwnd_10m');
4

0 回答 0