我有下面的月值向量(vectorA(。我把日期相关的信息放在它旁边,以帮助说明任务,但我只使用向量本身
dates month_in_q vectorA
31/01/2020 1 10
29/02/2020 2 15
31/03/2020 3 6
30/04/2020 1 8
31/05/2020 2 4
30/06/2020 3 3
我如何根据这个算法创建一个新的矢量new
- 在每个季度中,第一个月是最初的第一个月
- 每个季度的第二个月是第一个月和第二个月中的平均值
- 每个季度的第三个月是所有三个月的平均值
因此,我通过在一个循环中操纵原始向量a获得以下向量NEW,给定以上的重复出现模式
dates month_in_q vectorA vectorNEW
31/01/2020 1 10 10
29/02/2020 2 15 AVG(10+15)
31/03/2020 3 6 AVG(10+15+6)
30/04/2020 1 8 8
31/05/2020 2 4 AVG(8+4)
30/06/2020 3 3 AVG(8+4+3)
... ... ... ...
用户dpb在mathworks网站上提供了一个优雅的解决方案。
vectorNEW=reshape(cumsum(reshape(vectorA,3,[]))./[1:3].',[],1);
下方的更多信息
https://uk.mathworks.com/matlabcentral/answers/823055-how-to-average-monthly-data-using-a-specific-method-in-matlab