【问题标题】:MATLAB Cut 3D array of daily data into monthly segmentsMATLAB 将每日数据的 3D 数组切割成每月段
【发布时间】:2013-06-18 19:41:16
【问题描述】:
我有一个 1437x159x1253 的大型矩阵(我们称之为 A),其中包含 2 年多一点的每日海冰数据。我需要编写一个代码来获取每个月的每日数据并在其上表示(A,3)。所以基本上,1253 是天数。如果我从一月开始,我需要做前 31 天的平均值(A,3),然后是二月的平均值(A,3),接下来的 28 天或 29 天。因为日子在 31 和 30 之间交替(以及 2 月的 28 或 29),我不知道如何编写代码来执行此操作。我可以手动完成,但这需要一段时间。
谢谢!
【问题讨论】:
标签:
matlab
multidimensional-array
average
mean
【解决方案1】:
您可以初始化一个包含每个月的天数的数组Mon = [31, 28, 31, 30, 31, 30, 31, 31, 30, 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
【讨论】:
-
-
一切由你决定。如果您接受用户输入(“是/否”),请参阅input,或者您是否手动编辑代码(设置“leap_year = TRUE 或 FALSE”)。从那里,您可以使用 if...then 语句设置 Mon(2)=29。