Поскольку я недавно узнал от Луиса Мендо, что свертка является ключом к успеху , я пришел к следующей мысли: если ваши данные полны, то есть вы можете гарантировать, что на каждый день всегда есть 8 записей, вы можете просто использовать следующий подход:
% Some test data.
Date = [
1951 1 1 1 0;
1951 1 1 1 3;
1951 1 1 1 6;
1951 1 1 1 9;
1951 1 1 1 12;
1951 1 1 1 15;
1951 1 1 1 18;
1951 1 1 1 21;
1952 1 2 2 0;
1952 1 2 2 3;
1952 1 2 2 6;
1952 1 2 2 9;
1952 1 2 2 12;
1952 1 2 2 15;
1952 1 2 2 18;
1952 1 2 2 21]
% Temporary result for convolution.
temp = conv2(Date, ones(8, 1)) / 8;
% Extract values of interest.
dayy = temp(8:8:end, :)
Выход:
Date =
1951 1 1 1 0
1951 1 1 1 3
1951 1 1 1 6
1951 1 1 1 9
1951 1 1 1 12
1951 1 1 1 15
1951 1 1 1 18
1951 1 1 1 21
1952 1 2 2 0
1952 1 2 2 3
1952 1 2 2 6
1952 1 2 2 9
1952 1 2 2 12
1952 1 2 2 15
1952 1 2 2 18
1952 1 2 2 21
dayy =
1951.0000 1.0000 1.0000 1.0000 10.5000
1952.0000 1.0000 2.0000 2.0000 10.5000
Если вам нужна информация о году и дне, ее можно получить отдельно. Но в вашем оригинальном сообщении эта информация, похоже, была ненужной.
Просто чтобы быть уверенным: я знаю, что я использовал матрицу Date
в своем примере. Но поскольку Date
соответствует тому же формату, что и Data
, и вы можете легко проверить результаты требуемой операции mean
, я использовал ее в качестве примера.