帮助使用accumarray 3 d矩阵

4视图(30天)
光工作
光工作 2015年10月26日
评论道: 光工作2015年11月1日
你好,
我有一个3 d数据数组的降雨量地区命名 。维度(longitud、纬度、时间):
页< XY x T双>
对于每一次我有一个二维数组中包含的降雨值每一个点在我的(x, y)。例如,时间= 1(第一天)包含这样的:
页(::1)=
0.0 2.2 1.0
4.1 5.0 4.5
2.0 1.9 1.5
等等。第三列的 (时间)是指数的每一天我的时期,这对应于数组中的行号 日期 和看起来像这样:
日期< T x3双>
日期(:,)=
1999年01 01
1999年01 02
1999年01 03
我需要在每年的平均降雨量数据(2000年1999年的意思,是说,一个等)。我还需要的平均年夏季。
我试着使用 accumarray 每年平均降雨量。但是这么优雅的/有效的功能,很难理解它是如何工作的,特别像我这样的新手。这是我试过:
t = 1:大小(数据,3);
subtot (:,:, t) = accumarray(日期(:1),数据(:,:,t), [], @mean);
结束
导致:
错误使用accumarray
第二个输入VAL必须与一个元素一个向量在潜艇为每一行,或一个标量。
Matlab的文档是不够的我理解如何使用accumarray在这种情况下。我也不懂如何使用它,当我想要每年夏天的平均值(1999年夏季,2000年夏季,2001年夏天,…)
我正确的方向吗?如果是这样,我怎么能正确地使用函数所以我想要的吗?
任何帮助/建议不仅仅是受欢迎的。提前谢谢你带你的时间,抱歉我的破烂英语。

接受的答案

大卫年轻
大卫年轻 2015年10月27日
我认为这是简单的使用 的意思是 直接和避免 accumarray 。为了得到所有1999年的降雨量,例如,你可以这样做:
days1999 =日期(:1)= = 1999;
pp1999 =页(:,:,days1999);
然后在1999年得到每个位置的意思是:
mean1999 =意味着(pp1999, 3);随着时间的推移% 3意味着平均
或1999年获得总体的意思是:
overallMean1999 =意味着(pp1999 (:));
选择夏季(说,6月,7月,8月)
daysSummer =日期(:,2)> = 6 &日期(:,2)< = 8;
ppSummer =页(:,:,daysSummer);
等。
如果你做几年可以取代1999年由一个变量值,在一个循环进行计算。
1评论
光工作
光工作 2015年11月1日
完美!谢谢你:D

登录置评。

更多的答案(0)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!