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

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

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

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

Связанные примеры

Больше о