Подписанная ссылка
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]