MATLAB将每日数据的3D数组切割成每月的部分

MATLAB将每日数据的3D数组切割成每月的部分,matlab,multidimensional-array,average,mean,Matlab,Multidimensional Array,Average,Mean,我有一个1437x159x1253大矩阵(让我们称之为a)的2年多一点的每日海冰数据。我需要写一个代码,从每个月的每日数据,并在它的意思是(a,3)。基本上,1253是以天为单位的t。如果我从1月开始,我需要先计算前31天的平均值(A,3),然后是2月的平均值(A,3),接下来的28或29天。因为日期在31和30之间交替(2月份是28或29),所以我不知道如何编写代码来实现这一点。我可以手动完成,但那需要一段时间 谢谢 您可以初始化包含每个月天数的数组,Mon=[31,28,31,30,31,3

我有一个1437x159x1253大矩阵(让我们称之为a)的2年多一点的每日海冰数据。我需要写一个代码,从每个月的每日数据,并在它的意思是(a,3)。基本上,1253是以天为单位的t。如果我从1月开始,我需要先计算前31天的平均值(A,3),然后是2月的平均值(A,3),接下来的28或29天。因为日期在31和30之间交替(2月份是28或29),所以我不知道如何编写代码来实现这一点。我可以手动完成,但那需要一段时间


谢谢

您可以初始化包含每个月天数的数组,
Mon=[31,28,31,30,31,30,31,31,31,30,31]
使用布尔值检查是否为闰年(设置
Mon(2)=29
)。天数将有助于您使用如下循环对每个月进行适当的索引:

index=1;
for i=1:12
  average = mean(A(:,:,index:(index+Mon(i)-1),3);
  index = index+M(i);     % Starting location of the next month
end

你能解释一下如何使用布尔值来检查它是否是闰年吗?这完全取决于你。如果您接受用户输入(“是/否”),请参阅,或者您是否手动编辑代码(设置“闰年=TRUE或FALSE”)。从那里,您可以使用
if…then
语句来设置Mon(2)=29。