Преобразованная в нижний индекс ссылка
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]