MATLAB: интегрировать один график в другой - PullRequest
0 голосов
/ 04 мая 2018

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

Рассмотрим исходное расписание tt. Я хотел бы расширить его, используя RowTimes vector datesWeekdays. Расширенные строки должны содержать NaN.

Во время игры мне было интересно, имеет ли смысл сначала создавать новое расписание, включающее все даты и устанавливая данные в NaN, а затем «интегрировать» исходное расписание tt в новое расписание ttWeekdays.

Вот игрушечный пример:

data = rand(3,2);
dates = datetime({'2018-04-30', '2018-05-02', '2018-05-03'}, 'InputFormat','yyyy-MM-dd');
tt = array2timetable(data, 'RowTimes', dates, 'VariableNames', {'high', 'low'})

datesWeekdays = datetime({'2018-04-30', '2018-05-01', '2018-05-02', '2018-05-03', '2018-05-04'}, 'InputFormat','yyyy-MM-dd');
dataWeekdays = nan(5,2);
ttWeekdays = array2timetable(dataWeekdays, 'RowTimes', datesWeekdays, 'VariableNames', {'high', 'low'})

1 Ответ

0 голосов
/ 04 мая 2018

Для этого вы можете использовать retime. Примерно так:

% Set up a date vector
newDates = datetime('2018-04-30'):datetime('2018-05-10');
newDates(isweekend(newDates)) = [];

% Use RETIME in default mode to expand input table
retime(tt, newDates)

, который получает

  9×2 timetable
       Time         high        low  
    ___________    _______    _______
    30-Apr-2018    0.81472    0.91338
    01-May-2018        NaN        NaN
    02-May-2018    0.90579    0.63236
    03-May-2018    0.12699    0.09754
    04-May-2018        NaN        NaN
    07-May-2018        NaN        NaN
    08-May-2018        NaN        NaN
    09-May-2018        NaN        NaN
    10-May-2018        NaN        NaN

Обратите внимание, что retime поддерживает множество методов для заполнения отсутствующих данных - здесь мы используем значение по умолчанию 'fillwithmissing'.

...