У меня есть почасовые данные, и я хочу найти ежедневное максимальное 8-часовое среднее значение. В принципе, за каждый час дня я хочу сделать 8-часовое среднее. Поэтому возьмите среднее число с 0:00 до 8:00, затем с 1:00 до 9:00 и т. Д.), Поэтому я получаю 24 8-часовых средних периода (некоторые из них работают на следующий день, конечно). Тогда мне нужно взять максимум этих 24 8-часовых средних, чтобы получить максимальный дневной максимум.Ежедневный максимум 8-часовой пробег среднее/скользящее среднее
.mat файл используется, можно найти здесь: https://www.dropbox.com/sh/9e2dgm0imvr0hpe/tAUOtpZEEa
записка о формате файла: The O3.mat файл имеет переменную O3_Sorted, которая является массивом ячеек. Он содержит все данные, уже отсортированные. Но данные содержат информацию из нескольких сайтов (т. Е. Есть информация из разных мест). Информация для каждого сайта сортируется вместе, но в коде, когда я пытаюсь найти 8-часовые средние значения, я должен вытащить один сайт за раз, чтобы средние значения не попадали в начало данных для другое место.
Вот пример того, как выглядят вещи. Я включил один день для одного сайта и полдня другого сайта. Фактический файл имеет месяц данных для каждого из этих сайтов и других сайтов. Как видите, иногда данные отсутствуют. Колонка 1 - имя сайта Колонка 2 - Дата Колонка 3 - Час Колонка 4 - Данные
003-0010 2007-05-31 00:00 0.016
003-0010 2007-05-31 01:00 0.015
003-0010 2007-05-31 02:00 0.002
003-0010 2007-05-31 03:00 0.03
003-0010 2007-05-31 04:00 0.019
003-0010 2007-05-31 05:00 0.013
003-0010 2007-05-31 06:00 0.018
003-0010 2007-05-31 07:00 0.024
003-0010 2007-05-31 08:00 0.031
003-0010 2007-05-31 09:00 0.029
003-0010 2007-05-31 10:00 0.031
003-0010 2007-05-31 11:00 0.035
003-0010 2007-05-31 12:00 0.026
003-0010 2007-05-31 13:00 0.026
003-0010 2007-05-31 14:00 0.033
003-0010 2007-05-31 15:00 0.039
003-0010 2007-05-31 16:00 0.036
003-0010 2007-05-31 17:00 0.035
003-0010 2007-05-31 18:00 0.031
003-0010 2007-05-31 19:00 0.03
003-0010 2007-05-31 20:00 0.03
003-0010 2007-05-31 21:00 0.017
003-0010 2007-05-31 22:00 0.017
003-0010 2007-05-31 23:00 0.007
027-0007 2007-05-31 00:00 0.045
027-0007 2007-05-31 01:00 0.043
027-0007 2007-05-31 02:00
027-0007 2007-05-31 03:00 0.038
027-0007 2007-05-31 04:00 0.037
027-0007 2007-05-31 05:00 0.034
027-0007 2007-05-31 06:00 0.034
027-0007 2007-05-31 07:00 0.038
027-0007 2007-05-31 08:00 0.044
027-0007 2007-05-31 09:00 0.05
027-0007 2007-05-31 10:00 0.054
027-0007 2007-05-31 11:00 0.051
027-0007 2007-05-31 12:00 0.047
Вот то, что я до сих пор:
for i = 1:size(O3_sites)
I = ismember(D(:,6), O3_sites(i)); % Rows were the cell array O3_sorted has data corresponding to a certain site
site = D(I,:);
%% Convert O3 from ppm to ppb, 1ppm = 1000ppb
x = 1000;
y = str2double(O3);
O3_data = bsxfun(@times,x,y); % ppb
% Find size of array
[M, N]= size(O3_data);
% Create empty array
O3_MD8 = zeros(N,M-7); % double
**% Do a loop to calculate the running mean
for j = 1:M-7
A = O3_data(j:j+7);
O3_MD8(:,j) = mean(A);
end**
% Find max from each 8-hour loop
end
После того как я получаю 8-часовой в среднем, как я могу попросить MATLAB найти максимальное значение для каждых 24 средних значений? В основном, получите максимальные среднечасовые значения.
Кроме того, метод, который я пытаюсь сделать сейчас, является немного рискованным, потому что я не использую данные и поэтому, если данные отсутствуют в день, я не буду знать. Но я не знаю, как это учитывать при написании кода.
Можете ли вы отправить образцы только соответствующих данных и соответствующим образом подрезать свой код? Трудно расшифровать то, что фактически представляет собой массив ячеек 23808 x 24. – kkuilla
Я выставил весь код, потому что некоторым людям нравится его запускать. Я помещал звезды вокруг соответствующего раздела. В основном, фактические данные измерений находятся в столбце 17, а название сайта, из которого он пришел, находится в столбце 6.Важной частью является область для цикла, особенно начиная с «Сделайте цикл, чтобы вычислить текущее среднее». Надеюсь, что это полезно – shizishan
Не могли бы вы затем опубликовать десять строк столбца 6 и 17, а затем удалить любой код за пределами звезд, пожалуйста? Все остальное не имеет отношения к вопросу, который вы задаете. Вы должны облегчить людям понимание и запуск, если вы хотите получить ответы. – kkuilla