Подписанная ссылка
subsref не рекомендуется. Использовать timetable вместо этого. Для получения дополнительной информации смотрите Преобразование финтов финансовых временных рядов в Timetables.
subref
subsref реализует индексацию для объекта финансовых временных рядов. Целочисленная индексация или дата (и время) вектору символов индексация разрешена. Серийные номера дат не могут использоваться в качестве индексов.
Чтобы использовать индексацию вектора символов даты, заключайте векторы (векторы) символов даты в пару одинарных кавычек ''.
Вы можете использовать целочисленную индексацию для объекта, как в любом другом MATLAB® матрица. Он возвращает соответствующую запись (is) из объекта.
Кроме того, 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]