【问题标题】: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。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 2022-01-07
    • 2021-06-19
    • 2018-08-19
    • 1970-01-01
    • 2013-05-02
    相关资源
    最近更新 更多