TEMP = taux(LAT < 0 & LAT > -9 & LON < 90 & LON > 70,timeIndex);
输出这个奇妙的错误:
Index exceeds matrix dimensions.
taux is 360x160x192.
LAT 160x360 , LON 。 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);
答案 0 :(得分:1)
据我所知,您只能使用索引来单独选择每个维度的部分,或者一次性对所有维度使用单个索引矩阵。没有办法将某些维度加在一起并留下一些自己。
我猜你想要特定纬度和经度的值以某种方式保持分组。然后,一种方法是根据LAT
和LON
矩阵找到要选择的值的线性索引,然后为每个时间索引偏移这些索引:
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);
这将返回一个矩阵,其中每一行对应不同的纬度和经度,每列对应不同的时间。