Проектом MATLAB®software может эффективно выполнить повторенные операции на наборах данных, хранимых в векторах и матрицах. Код MATLAB, который записан, чтобы работать одновременно с различными массивами, как говорят, векторизован. Векторизованный код не является только чистым и кратким, но и также эффективно обрабатывается MATLAB.
Поскольку MATLAB оптимизирован для обработки векторизованного кода, много функций Financial Toolbox™ принимают или векторные или матричные входные параметры, а не одно (скалярные) значения.
Один пример такой функции irr
функция, которая вычисляет внутреннюю норму прибыли потока потока наличности. Если вы вводите вектор из потоков наличности от одного потока потока наличности, то irr
возвращает скалярную норму прибыли. Если вы вводите матрицу потоков наличности от нескольких потоков потока наличности, где каждый столбец матрицы представляет различный поток, то irr
возвращает вектор из внутренних норм прибыли, где столбцы соответствуют столбцам входной матрицы. Много других функций Financial Toolbox работают так же.
Как пример, предположите, что вы делаете начальные инвестиции 100$, из которых вы затем получаете серией ежегодных денежных поступлений 10$, 20$, 30$, 40$ и 50$. Этот поток потока наличности хранится в векторе
CashFlows = [-100 10 20 30 40 50]'
CashFlows = -100 10 20 30 40 50
Используйте irr
функция, чтобы вычислить внутреннюю норму прибыли потока потока наличности.
Rate = irr(CashFlows)
Rate = 0.1201
Для одного потока потока наличности CashFlows
, функция возвращает скалярную норму прибыли 0.1201
, или 12,01%.
Теперь используйте irr
функция, чтобы вычислить внутренние нормы прибыли для нескольких потоков потока наличности.
Rate = irr([CashFlows CashFlows CashFlows])
Rate = 0.1201 0.1201 0.1201
MATLAB выполняет тот же расчет на всех активах целиком. Для трех потоков потока наличности, irr
функция возвращает вектор из трех внутренних норм прибыли.
В контексте Financial Toolbox векторизованное программирование полезно в управлении портфелем. Можно организовать несколько активов в один набор путем размещения данных для каждого актива в различном столбце матрицы или строке, затем передать матрицу функции Financial Toolbox.
Введите векторы символов MATLAB, окруженные одинарными кавычками ('character vector'
).
Вектор символов хранится как символьный массив, один символ ASCII на элемент. Таким образом вектор символов даты
DateCharacterVector = '9/16/2017'
Этим вектором символов даты является на самом деле 1
- 9
вектор. Если вы создаете вектор или матрицу векторов символов, каждый вектор символов должен иметь ту же длину. Используя вектор-столбец, чтобы создать вектор из векторов символов может позволить вам визуально проверять, что все векторы символов являются той же длиной. Если ваши векторы символов не являются той же длиной, используйте пробелы или нули, чтобы сделать их той же длиной, как в следующем коде.
DateFields = ['01/12/2017' '02/14/2017' '03/03/2017' '06/14/2017' '12/01/2017'];
DateFields
5
- 10
массив векторов символов.
Вы не можете смешать числа и векторы символов в векторе или матрице. Если вы вводите вектор или матрицу, которая содержит соединение чисел и векторов символов, MATLAB обрабатывает каждую запись как символ. Как пример, вход следующий код
Item = [83 90 99 '14-Sep-1999']
Item = SZc14-Sep-1999
Программное обеспечение изучает вход не как 1
- 4
вектор, но как 1
- 14
символьный массив со значением SZc14-Sep-1999
.
Некоторые функции не возвращают аргументов, некоторые возвращаются всего один, и некоторые возвращают несколько аргументов. Функции, которые возвращают несколько аргументов, используют синтаксис
[A, B, C] = function(input_arguments...)
к возвращаемым аргументам A
B
, и C
. Если вы не используете все кроме одного, функция возвращает первый аргумент. Таким образом, для этого примера, если вы используете синтаксис
X = function(input_arguments...)
function
возвращает значение для A
, но не для B
или C
.
Некоторые функции, которые возвращают векторы, принимают только скаляры как аргументы. Такие функции не могут принять векторы как аргументы и возвратить матрицы, где каждый столбец в выходной матрице соответствует записи во входе. Выходные векторы могут быть переменной длиной.
Например, большинство функций, которые требуют жизни актива как входа и возвращаемых значений, соответствующих различным периодам по жизни актива, не может обработать векторы или матрицы как входные параметры. Эти функции включают amortize
, depfixdb
, depgendb
, и depsoyd
. Например, рассмотрите автомобиль, для которого вы хотите вычислить график амортизации. Используйте depfixdb
функция, чтобы вычислить поток остаточной стоимости баланса снижения для актива. Установите начальное значение актива и время жизни актива. Обратите внимание на то, что в возвращенном векторе, время жизни актива определяет количество строк. Теперь рассмотрите набор автомобилей с различным временем жизни. Поскольку depfixdb
не может вывести матрицу с неравным количеством строк в каждом столбце, depfixdb
не может принять один входной вектор со значениями для каждого актива в наборе.