Main Content

在函数中使用输入和输出参量

输入参量

向量和矩阵输入

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 × 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...)

来返回参量 ABC。如果您省略其中一些参量,只保留一个,则函数都返回第一个参量。因此,对于此示例,如果您使用以下语法

X = function(input_arguments...)

function 将返回值 A,但不返回 BC

某些返回向量的函数仅接受标量作为参量。此类函数不能接受向量作为参量并返回输出矩阵(其中每一列对应于输入中的一个条目)。输出向量可以是可变长度。

例如,在以资产生命周期作为输入并返回对应于资产生命周期内不同期间的值的函数中,大多数都不接受向量或矩阵作为输入参量。这些函数包括 amortizedepfixdbdepgendbdepsoyd。例如,假设您要计算汽车的折旧时间表。使用 depfixdb 函数计算资产的余额递减折旧值流。设置资产的初始值和资产的生命周期。请注意,在返回的向量中,资产生命周期决定了行数。现在假设有一组不同生命周期的汽车。由于 depfixdb 不能输出每列的行数不相等的矩阵,因此 depfixdb 不能接受包含集合中每个资产值的单个输入向量。

相关示例

详细信息