setfield

Установите содержимое определенного поля

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]
Представлено до R2006a