主要内容

参数

声明函数参数验证

语法

参数argName1(维度)dataType {validators} = defaultValue...argNameN……结束参数(重复)…结束

描述

例子

参数……结束声明函数的输入参数。参数块是可选的。如果你包括参数块,它必须出现在函数的第一个可执行行之前。函数可以包含多个参数块。

每个参数可以有一个或多个限制或默认值,如下所示:

argName (dimensions) dataType {validators} = defaultValue

  • (尺寸)-输入大小,以逗号分隔的两个或多个数字的列表指定,例如(1、2)(3、5、2),或(: 1).冒号允许该维度中的任何长度。(尺寸)不能包含表达式。

    输入的维度必须匹配(尺寸)完全正确或者是兼容的所指定的大小(尺寸).例如,(: 1)指定输入必须是1 × -n行向量,但是ann-by-1列向量是兼容的。该函数将输入的行向量重新塑造为列向量。类似地,大小为(2、3)允许标量输入,但它将输入扩展为2 × 3矩阵。看到基本操作的兼容数组大小获取更多信息。

  • 数据类型—数据类型,指定为类名,如.输入必须是指定的类型或可以转换为该类型的类型。例如,指定接受类型的值并将它们转换为

  • {验证器}—以逗号分隔的验证函数列表,例如mustBeNumeric而且mustBeScalarOrEmpty,用大括号括起来。当输入参数不匹配其条件时,验证函数将出错。不像数据类型,验证函数不会修改输入参数。有关验证函数的列表,请参见参数验证函数

  • defaultValue—默认值必须符合指定的大小、类型和验证规则。默认值也可以是表达式。指定默认值使实参可选。可选参数必须定位在函数签名中的必选参数之后参数块。

对于名称-值参数,参数使用表单nv.name,在那里nv结构名是否在函数签名和的名字参数块中的参数名。例如,定义一个接受名称-值参数的函数,该函数使用名为选项

y = myFunction(x,options)

在arguments块中,指定名称-值参数的名称为字段:

参数x选项。Name1选项。Name2结束

有关使用的更多信息参数一般的块,参见块语法

(重复)…结束声明重复的参数。

例如,如果创建一个名为myplot重复的论证XY,风格,该函数接受这三个参数的多个集合,例如style1 myplot (x1, y1, x2, y2, style2).MATLAB®创建一个单元格数组,其中包含为该参数传递的所有值。

函数只能包含一个重复参数块。如果函数同时包含重复实参和名称-值实参,则在重复实参块之后声明它们自己的单独实参块。

有关重复参数的详细信息,请参见重复的参数

例子

全部折叠

编写一个函数,将输入参数的大小限制为任意长度的行向量。使用验证函数将该向量的元素限制为数值。

函数[m,s] = twoStats(x)参数x(: 1) {mustBeNumeric}结束M = mean(x,“所有”);S = std(x,1,“所有”);结束

在一个三元素行向量上调用函数。

A = [1 3 5];[m,s] = twoStats(a)
M = 3 s = 1.6330

使用列向量调用函数也是有效的,因为行向量和列向量是兼容的。

A = [1 3 5]';[m,s] = twoStats(a)
M = 3 s = 1.6330

如果使用包含非数值值的向量调用函数,则mustBeNumeric验证函数抛出错误。

A = [“1”“3”“5”];[m,s] = twoStats(a)
在位置1使用无效参数时出错。Value必须是数字。

若要声明函数的可选名称-值实参,请在函数声明中包含结构名,并将实参名称定义为该结构的字段参数块。

声明myRectangle函数与选项作为结构名。这两个领域选项线型而且线宽,是函数的名称-值参数中的名称:

函数myRectangle (X, Y,选项)参数XY选项。线型(1,1)字符串“-”选项。线宽(1,1) {mustBeNumeric}= 1结束%功能代码...结束

这两个参数名都定义了默认值,所以它们都是可选的。所有这些语法都是调用函数的有效方法:

myRectangle(4、5)myRectangle(4、5、线型=”:“线宽= 2)myRectangle(4、5、线宽= 2,线型=”:“) myRectangle(4、5、线型=”:“) myRectangle(4、5、线宽= 2)

在R2021a之前,将名称作为字符串或字符向量传递,并使用逗号分隔名称和值。这两种语法在以后的版本中都有效。

重复实参是可以在函数调用中重复0次或多次的单个实参或实参组。的fRepeat函数接受重复的参数组xy,风格.限制输入参数x而且y到双精度值或可转换为双精度值的向量。限制风格对着琴弦”——“而且”:“

函数fRepeat (x, y,风格)参数(重复)x(: 1)增加一倍y(: 1)增加一倍风格{mustBeMember(风格 ,["--",":"])}结束重塑输入单元阵列并调用绘图函数Z = shape([x;y;style],1,[]);如果~ isempty (z)情节(z {:});结束结束

调用fRepeat有两组输入。MATLAB创建一个单元格数组,其中包含传入for的所有值x的值的另一个数组y,三分之一的价值风格.然后,该函数将这些数组重新塑造为1 × 6单元格数组,z,并将其传递给情节

X1 = 1:10;Y1 = 1:10;s1 =”:“;X2 = 1:7;Y2 = 1:1.5:10;s2 =”——“;s1 fRepeat (x1, y1, x2, y2, s2)

显示两条线的图

限制

  • 嵌套函数、抽象方法或句柄类析构函数方法不支持参数金宝app块。

更多关于

全部折叠

金宝app支持的数据类型

参数声明可以指定MATLAB支持的任何MATLAB类或外部定义的类,但在MATLAB软件版本7.6之前定义的Java类、COM类和MATLAB类除外(换句话说,类定义不使用金宝appclassdef关键字)。

提示

  • 使用数据类型限制可能导致输入参数的隐式转换。例如:

    函数y = myFunction(inputArg1)参数inputArg1 (1,1) double end…
    对于这个函数,如果传递字符串“123”作为输入参数,MATLAB将字符串转换为数值123类型的

    验证函数不会以任何方式更改输入值,因此为了避免数据类型转换,请使用一个或多个验证器函数而不是数据类型来限制输入。例如:

    • 若要避免将字符串转换为数值,请使用mustBeAmustBeFloat,或mustBeNumeric

    • 若要避免将数值转换为字符串,请使用mustBeTextmustBeTextScalar,或mustBeNonZeroLengthText

    • 要避免大小转换,请使用mustBeVectormustBeScalarOrEmpty

R2019b引入