Подстрочная ссылка
subsref не рекомендуется. Использовать timetable вместо этого. Дополнительные сведения см. в разделе Преобразование объектов финансового временного ряда в расписания.
subref
subsref реализует индексирование для объекта финансового временного ряда. Допускается целочисленная индексация или индексация вектора символов даты (и времени). Серийные номера дат не могут использоваться в качестве индексов.
Чтобы использовать индексирование вектора символов даты, заключите вектор (векторы) символов даты в пару одиночных кавычек ''.
Для объекта можно использовать целочисленное индексирование, как в любой другой матрице MATLAB ®. Он возвращает соответствующую запись (записи) из объекта.
Дополнительно, subsref позволяет получить доступ к отдельным компонентам объекта с помощью синтаксиса структуры.
Создание временного ряда с именем myfts:
myfts = fints((datenum('07/01/98'):datenum('07/01/98')+4)',... [1234.56; 2345.61; 3456.12; 4561.23; 5612.34], [], 'Daily',... 'Data Reference')
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: Data Reference
freq: Daily (1)
'dates: (5)' 'series1: (5)'
'01-Jul-1998' [ 1.2346e+03]
'02-Jul-1998' [ 2.3456e+03]
'03-Jul-1998' [ 3.4561e+03]
'04-Jul-1998' [ 4.5612e+03]
'05-Jul-1998' [ 5.6123e+03]Извлеките данные за один день 1 июля 1998 года:
myfts('07/01/98')Warning: FINTS will be removed in a future release. Use TIMETABLE instead.
> In fints/subsref (line 106)
Warning: FINTS will be removed in a future release. Use TIMETABLE instead.
> In fints/display (line 66)
ans =
desc: Data Reference
freq: Daily (1)
'dates: (1)' 'series1: (1)'
'01-Jul-1998' [ 1.2346e+03]Теперь извлеките данные для диапазона дат с 1 июля 1998 года по 5 июля 1998 года:
myfts('07/01/98::07/03/98')
Warning: FINTS will be removed in a future release. Use TIMETABLE instead.
> In fints/subsref (line 106)
Warning: FINTS will be removed in a future release. Use TIMETABLE instead.
> In fints/display (line 66)
ans =
desc: Data Reference
freq: Daily (1)
'dates: (3)' 'series1: (3)'
'01-Jul-1998' [ 1.2346e+03]
'02-Jul-1998' [ 2.3456e+03]
'03-Jul-1998' [ 3.4561e+03]Для доступа к отдельным компонентам объекта финансового временного ряда можно использовать синтаксис структуры MATLAB. Чтобы получить поле описания myfts, введите
myfts.desc
в командной строке, которая возвращает
Warning: FINTS will be removed in a future release. Use TIMETABLE instead.
> In fints/subsref (line 106)
ans =
'Data Reference'Так же
myfts.series1
прибыль
Warning: FINTS will be removed in a future release. Use TIMETABLE instead.
> In fints/subsref (line 106)
Warning: FINTS will be removed in a future release. Use TIMETABLE instead.
> In fints/display (line 66)
ans =
desc: Data Reference
freq: Daily (1)
'dates: (5)' 'series1: (5)'
'01-Jul-1998' [ 1.2346e+03]
'02-Jul-1998' [ 2.3456e+03]
'03-Jul-1998' [ 3.4561e+03]
'04-Jul-1998' [ 4.5612e+03]
'05-Jul-1998' [ 5.6123e+03]Синтаксис для целочисленной индексации тот же, что и для любой другой матрицы MATLAB. Создайте новый объект финансового временного ряда, содержащий как даты, так и время:
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]); anewfts = fints(dates_times,(1:6)',{'Data1'},1,'Another 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)
anewfts =
desc: Another 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' [ 5]
' " ' '12:00' [ 6]Используйте целочисленную индексацию для извлечения второго и третьего элементов данных из объекта.
anewfts(2:3)
Warning: FINTS will be removed in a future release. Use TIMETABLE instead.
> In fints/subsref (line 106)
Warning: FINTS will be removed in a future release. Use TIMETABLE instead.
> In fints/display (line 66)
ans =
desc: Another FinTs
freq: Daily (1)
'dates: (2)' 'times: (2)' 'Data1: (2)'
'01-Jan-2001' '12:00' [ 2]
'02-Jan-2001' '11:00' [ 3]Для вектора символов даты заключите вектор символов индексации в пару одиночных кавычек.
Если имеется одна дата с несколькими временами, индексирование только с датой возвращает все времена для этой конкретной даты:
anewfts('01-Jan-2001')Warning: FINTS will be removed in a future release. Use TIMETABLE instead.
> In fints/subsref (line 106)
Warning: FINTS will be removed in a future release. Use TIMETABLE instead.
> In fints/display (line 66)
ans =
desc: Another FinTs
freq: Daily (1)
'dates: (2)' 'times: (2)' 'Data1: (2)'
'01-Jan-2001' '11:00' [ 1]
' " ' '12:00' [ 2]
Чтобы указать одну конкретную дату и время, проиндексируйте эту дату и время:
anewfts('01-Jan-2001 12:00')Warning: FINTS will be removed in a future release. Use TIMETABLE instead.
> In fints/subsref (line 106)
Warning: FINTS will be removed in a future release. Use TIMETABLE instead.
> In fints/display (line 66)
ans =
desc: Another FinTs
freq: Daily (1)
'dates: (1)' 'times: (1)' 'Data1: (1)'
'01-Jan-2001' '12:00' [ 2]Для указания диапазона дат и времени используйте двоеточие (::) оператор:
anewfts('01-Jan-2001 12:00::03-Jan-2001 11:00')Warning: FINTS will be removed in a future release. Use TIMETABLE instead.
> In fints/subsref (line 106)
Warning: FINTS will be removed in a future release. Use TIMETABLE instead.
> In fints/display (line 66)
ans =
desc: Another FinTs
freq: Daily (1)
'dates: (4)' 'times: (4)' 'Data1: (4)'
'01-Jan-2001' '12:00' [ 2]
'02-Jan-2001' '11:00' [ 3]
' " ' '12:00' [ 4]
'03-Jan-2001' '11:00' [ 5]Для запроса всех дат, времени и данных используйте :: оператор без указания какой-либо конкретной даты или времени:
anewfts('::')
Warning: FINTS will be removed in a future release. Use TIMETABLE instead.
> In fints/subsref (line 106)
Warning: FINTS will be removed in a future release. Use TIMETABLE instead.
> In fints/display (line 66)
ans =
desc: Another 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' [ 5]
' " ' '12:00' [ 6]