Вы можете использовать mat2cell
, чтобы разделить данные в ячейках за месяц. Сначала создайте вектор с количеством дней в месяце (без учета високосных лет), а затем используйте это для разделения данных. Затем вы можете использовать cellfun
в каждой ячейке (то есть месяце), чтобы получить любую метрику, которую вы определяете в месяц:
data = rand(720, 360, 365);
days_per_month = [31 28 31 30 31 30 31 31 30 31 30 31];
% divide months in cells
data_cell = mat2cell(data, size(data,1), size(data,2), days_per_month);
mean_cell = cellfun(@(A) mean(A,3), data_cell, 'UniformOutput', false)
Чтобы использовать это в цикле и учитывать високосные годы, вы можете использовать функциюleapyear(year)
:
days_per_month = [31 28 31 30 31 30 31 31 30 31 30 31];
years = 1984:2015
for k = 1:numel(years)
if leapyear(years(k))
days_per_month(2) = 29;
else
days_per_month(2) = 28;
end
% rest of what you want to do
end