Использование входных и выходных аргументов с функциями

Входные параметры

Векторный и матричный входы

По проекту MATLAB®программное обеспечение может эффективно выполнять повторные операции над наборами данных, хранящихся в векторах и матрицах. Код 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-by- 9 вектор. Если вы создаете вектор или матрицу из векторов символов, каждый вектор символов должен иметь одинаковую длину. Использование вектора-столбца для создания вектора векторов символов может позволить вам визуально проверить, что все векторы символов имеют одинаковую длину. Если ваши векторы символов не совпадают по длине, используйте пространства или нули, чтобы сделать их такой же длиной, как в следующем коде.

DateFields = ['01/12/2017'
              '02/14/2017'
              '03/03/2017'
              '06/14/2017'
              '12/01/2017'];

DateFields является 5-by- 10 массив векторов символов.

Вы не можете смешивать числа и векторы символов в векторе или матрице. Если вы вводите вектор или матрицу, которая содержит смесь чисел и векторов символов, MATLAB рассматривает каждую запись как символ. В качестве примера введите следующий код

Item = [83  90  99 '14-Sep-1999']
Item =

SZc14-Sep-1999

Программа понимает вход не как 1-by- 4 вектор, но как 1-by- 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 невозможно принять один входной вектор со значениями для каждого актива в наборе.

Похожие примеры

Подробнее о