Установите содержимое определенного поля
setfield будет удален в будущем релизе. Используйте timetable вместо этого. Для получения дополнительной информации смотрите, Преобразовывают Финансовые маневры Объектов Временных рядов в Расписания.
newfts = setfield(tsobj,field,V) newfts = setfield(tsobj,field,{dates},V)
setfield обрабатывает содержимое полей в объекте временных рядов (tsobj) как поля в структуре.
newfts = setfield(tsobj,field,V) устанавливает содержимое заданного поля к значению V. Это эквивалентно синтаксису S.field = V.
newfts = setfield(tsobj,field,{dates},V) устанавливает содержимое заданного поля для заданных дат. dates может быть отдельными ячейками векторов символов даты или ячейкой области значений вектора символов даты с помощью оператора ::, например, '03/01/99::03/31/99'. Даты могут содержать информацию времени суток.
Пример 1. Установите заключительное значение в течение всех дней к 3 890.
load dji30short format bank myfts1 = setfield(myfts1, 'Close', 3890)
Warning: FINTS will be removed in a future release. Use TIMETABLE instead.
> In fints/setfield (line 84)
Warning: FINTS will be removed in a future release. Use TIMETABLE instead.
> In fints/display (line 66)
myfts1 =
desc: DJI30MAR94.dat
freq: Daily (1)
'dates: (20)' 'Open: (20)' 'High: (20)' 'Low: (20)' 'Close: (20)'
'04-Mar-1994' [ 3830.90] [ 3868.04] [ 3800.50] [ 3890.00]
'07-Mar-1994' [ 3851.72] [ 3882.40] [ 3824.71] [ 3890.00]
'08-Mar-1994' [ 3858.48] [ 3881.55] [ 3822.45] [ 3890.00]
'09-Mar-1994' [ 3853.97] [ 3874.52] [ 3817.95] [ 3890.00]
'10-Mar-1994' [ 3852.57] [ 3865.51] [ 3801.63] [ 3890.00]
'11-Mar-1994' [ 3832.58] [ 3872.83] [ 3806.69] [ 3890.00]
'14-Mar-1994' [ 3870.29] [ 3894.21] [ 3835.96] [ 3890.00]
'15-Mar-1994' [ 3863.41] [ 3888.46] [ 3826.85] [ 3890.00]
'16-Mar-1994' [ 3851.03] [ 3879.53] [ 3819.94] [ 3890.00]
'17-Mar-1994' [ 3853.62] [ 3891.34] [ 3821.66] [ 3890.00]
'18-Mar-1994' [ 3865.42] [ 3911.78] [ 3838.65] [ 3890.00]
'21-Mar-1994' [ 3878.38] [ 3898.25] [ 3838.65] [ 3890.00]
'22-Mar-1994' [ 3865.71] [ 3896.23] [ 3840.66] [ 3890.00]
'23-Mar-1994' [ 3868.88] [ 3901.41] [ 3839.80] [ 3890.00]
'24-Mar-1994' [ 3849.88] [ 3865.42] [ 3792.58] [ 3890.00]
'25-Mar-1994' [ 3827.13] [ 3826.85] [ 3774.73] [ 3890.00]
'28-Mar-1994' [ 3776.46] [ 3793.45] [ 3719.74] [ 3890.00]
'29-Mar-1994' [ 3757.17] [ 3771.86] [ 3689.23] [ 3890.00]
'30-Mar-1994' [ 3688.36] [ 3718.88] [ 3612.36] [ 3890.00]
'31-Mar-1994' [ 3639.71] [ 3673.10] [ 3544.12] [ 3890.00]Пример 2. Установите значения в течение определенных времен в определенные дни.
Сначала создайте финансовые временные ряды, содержащие данные времени суток.
dates = ['01-Jan-2001';'01-Jan-2001'; '02-Jan-2001'; ... '02-Jan-2001'; '03-Jan-2001';'03-Jan-2001']; times = ['11:00';'12:00';'11:00';'12:00';'11:00';'12:00']; dates_times = cellstr([dates, repmat(' ',size(dates,1),1),... times]); myfts = fints(dates_times,[(1:4)'; nan; 6],{'Data1'},1,... 'My FINTS')
Warning: FINTS will be removed in a future release. Use TIMETABLE instead.
> In fints (line 165)
Warning: FINTS will be removed in a future release. Use TIMETABLE instead.
> In fints/display (line 66)
myfts =
desc: My FINTS
freq: Daily (1)
'dates: (6)' 'times: (6)' 'Data1: (6)'
'01-Jan-2001' '11:00' [ 1]
' " ' '12:00' [ 2]
'02-Jan-2001' '11:00' [ 3]
' " ' '12:00' [ 4]
'03-Jan-2001' '11:00' [ NaN]
' " ' '12:00' [ 6]
Теперь используйте setfield, чтобы заменить данные в myfts с новыми данными, запускающимися в 12:00 1 января 2001 и заканчивающимися в 11:00 3 января 2001.
S = setfield(myfts,'Data1',... {'01-Jan-2001 12:00::03-Jan-2001 11:00'},(102:105)')
Warning: FINTS will be removed in a future release. Use TIMETABLE instead.
> In fints/setfield (line 84)
Warning: FINTS will be removed in a future release. Use TIMETABLE instead.
> In fints/display (line 66)
S =
desc: My FINTS
freq: Daily (1)
'dates: (6)' 'times: (6)' 'Data1: (6)'
'01-Jan-2001' '11:00' [ 1.00]
' " ' '12:00' [ 102.00]
'02-Jan-2001' '11:00' [ 103.00]
' " ' '12:00' [ 104.00]
'03-Jan-2001' '11:00' [ 105.00]
' " ' '12:00' [ 6.00]
chfield | fieldnames | getfield | isfield | rmfield