2015-04-08 1 views
0

Я работаю с данными временных рядов в MATLAB. У меня есть два вектора номеров дат, один из которых опирается на несколько субъективный источник данных. Если оба вектора были абсолютно точными, все номера дат должны соответствовать торговым дням, тогда как один вектор будет «правильным подмножеством» другого. К сожалению, это не так, потому что один из векторов содержит несколько номеров дат, которые соответствуют нерабочим дням. Я хотел бы найти способ заменить все нерабочие дни в этом векторе на следующий доступный рабочий день.Как определить даты, соответствующие нерабочим дням, и заменить их на следующий доступный рабочий день в MATLAB

Пример:

datenumbers = [736062;736063;736064;736065;736066;736067] 
% corresponds to [wed, thu, fri, sat, sun, mon] 

Этот документ содержит [736065;736066], который соответствует предстоящему уик-энду. Потому что это не рабочие дней я хотел бы определить номер даты, соответствующий последующий понедельник и изменить оба записи таким образом, чтобы:

datenumbers = [736062;736063;736064;736067;736067;736067] 
% corresponds to [wed, thu, fri, mon, mon, mon] 
+0

У вас есть панель инструментов для финансирования? – knedlsepp

+0

У меня есть финансовый инструментарий. Я также знаю функцию 'isbusday'. Я не знаю, как сообщить MATLAB о замене любых нерабочих дней на следующий понедельник. – Constantin

+0

'busdate' кажется многообещающим:« Следующий или предыдущий рабочий день » – knedlsepp

ответ

0

Один из способов сделать это просто перебрать все ваши ценности и изменить их, если это суббота или воскресенье.

datenumbers = [736062;736063;736064;736065;736066;736067]; 
for i = 1:length(datenumbers) 
    weekDay = mod(datenumbers(i),7); 
    if weekDay == 1 || weekDay == 2 
     datenumbers(i) = (3-weekDay) + datenumbers(i); 
    end 
end 
Смежные вопросы