0
TEMP = taux(LAT < 0 & LAT > -9 & LON < 90 & LON > 70,timeIndex);

输出这个奇妙的错误:

Index exceeds matrix dimensions.

taux is 360x160x192.

LAT 是160x360LON也是。timeIndex 是192x1(例如,它是时间在 1998 年到 1999 年之间的值的索引)

即使我反转矩阵或尝试以下操作,错误仍然存​​在。

TEMP = taux((LAT < 0 & LAT > -9 & LON < 90 & LON > 70)',timeIndex)

或者

TEMP = taux(LAT < 0 & LAT > -9 & LON < 90 & LON > 70,LAT < 0 & LAT > -9 & LON < 90 & LON > 70,timeIndex);
4

1 回答 1

1

据我所知,您只能使用索引来单独选择每个维度的部分,或者一次性对所有维度使用单个索引矩阵。没有办法将一些维度连接在一起,而让一些维度独立存在。

我猜您希望特定纬度和经度的值以某种方式保持分组。一种方法是根据LATLON矩阵找到要选择的值的线性索引,然后为每个时间索引偏移这些值:

latlon = (LAT < 0 & LAT > -9 & LON < 90 & LON > 70)';
timeOffset = size(taux, 1) * size(taux, 2) * (timeIndex' - 1)
indices = bsxfun(@plus, find(latlon), timeOffset);
TEMP = taux(indices);

这将返回一个矩阵,其中每一行对应不同的纬度和经度,每列对应不同的时间。

于 2013-04-01T06:48:17.433 回答