Функция, которая находит температуры за данный месяц по данным - PullRequest
0 голосов
/ 28 августа 2018

У меня проблемы с созданием функции со следующими параметрами:

Ndata = extperiod(data, year, month,time)

Данные представляют собой таблицу с 3 столбцами, которые слева направо:

year/month/date,   time,   temperature

Моя цель - создать функцию, которая может извлекать время и год / месяц независимо от даты и находить соответствующую им температуру.

  • Мне нужно избегать использования for циклов
  • Мне посоветовали использовать floor и find, где floor(YYYYMMDD/100) = YYYY*100 + MM, которые я каким-то образом хочу интегрировать в свою функцию.

Ранее я нашел способ извлечь все температуры из данных за данный день следующим образом:

k = find(data(:,1)==19750101);    
data(k(1):k(end),3)

Я пытаюсь включить этот метод, но я думаю, что подсказка "floor(YYYYMMDD/100)" немного сбивает меня с толку.

Я пробовал с find(data(:,1)==floor(YYYYMMDD/100)), где я думал бы, что мне дадут все даты с определенным годом и месяцем. Например:

find( data(:,1) == floor(19660101/100) )

Я думал, что это даст мне все точки в векторе столбца, где значение равно 196601. Но это не так.

Что я могу попробовать по-другому?

1 Ответ

0 голосов
/ 28 августа 2018

Из вашего объяснения вы хотите получить всю температуру за данный месяц, независимо от времени и дня.

Таким образом, вы хотите найти даты, которые входят в диапазон [YYYYMM ; YYYY{MM+1}[ или [YYYYMM ; {YYYY+1}01[ в случае выбора декабря. Напомним, что вы храните полную дату в вашей таблице. Таким образом, вам нужно применить ваш оператор floor к обеим сторонам вашего запроса, а не только к значению запроса, потому что никакая дата не является floor(YYYYMMDD/100)!

В результате попробуйте следующее:

find( floor(data(:,1)/100) == floor(19660101/100) )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...