主要内容

参数

声明函数参数验证

句法

参数argname1(尺寸)数据类型{validators} = defaultValue......argNameN……end arguments(重复)…结尾

描述

例子

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

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

argname(尺寸)数据类型{validators} = defaultValue

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

    输入的尺寸必须匹配(尺寸)完全或是兼容的指定的大小(尺寸).例如,(: 1)指定输入必须为1-N行矢量,但是一个N-By-1列向量兼容。该功能将行向量输入输入到列向量中。同样,大小(2,3)允许标量输入,但它将输入扩展为2 × 3矩阵。看到基本操作兼容数组大小为更多的信息。

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

  • {验证器}—以逗号分隔的验证函数列表,例如Mustbenumeric.mustBeScalarOrEmpty,封闭在卷曲括号中。验证功能错误当输入参数与其条件不匹配时。不像数据类型,验证函数不修改输入参数。有关验证函数的列表,请参见参数验证功能

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

名称-值参数,arg使用形式nv.name,在那里nv是函数签名中的结构名称名称是参数块中的参数名称。例如,定义使用命名的结构接受名称值参数的函数选项

y = myfunction(x,选项)

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

arguments x options.name1选项.name2结束

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

参数(重复)...结束声明重复参数。

例如,如果您创建一个名为myplot.重复参数Xy,风格,该函数接受多组这三个参数,例如MyPlot(x1,y1,style1,x2,y2,style2).马铃薯®创建包含为该参数传入的所有值的单元格数组。

函数只能包括一个重复参数块。如果该函数包括重复和名称值参数,则在重复参数块之后将自己单独的参数块声明名称值参数。

有关重复参数的更多信息,请参阅重复的参数

例子

全部折叠

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

函数[m s] = twoStats (x)参数X(1,:) {mustbenumeric}结尾m =均值(x,“所有”);s =性病(x, 1,“所有”);结尾

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

a = [1 3 5];[m,s] =旋晶虫(a)
m = 3 s = 1.6330

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

a = [1 3 5]';[m,s] =旋晶虫(a)
m = 3 s = 1.6330

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

= (“1”“3”“5”];[m,s] =旋晶虫(a)
错误使用两个stats在位置1无效参数。值必须为数字。

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

宣布myRectangle函数与选项作为一个结构名称。两个领域选项LINESTYLE.线宽,是函数名称值参数中的名称:

函数MyRectangle(X,Y,选项)参数Xy选项。LINESTYLE.(1,1)字符串=“-”选项。线宽(1,1){mustbenumeric}= 1结尾%函数代码......结尾

两个参数名称都有定义了默认值,因此它们都是可选的。所有这些语法都是调用该功能的有效方法:

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

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

重复参数是可以在函数调用中重复零个或多次的单个参数或参数组。这免费函数接受重复参数组Xy,风格.限制输入参数Xy指向双精度值的向量或可转换为双精度值的值。限制风格到琴弦”——““:”

函数Frepeat(x,y,style)参数(重复)x(1,:)双y(1,:)双风格{MentBemmber(style,[“ - ”,“:”])}结尾%重塑输入的单元格阵列和呼叫绘图函数z =重塑([x, y,风格]1 []);如果〜isempty(z)plot(z {:});结尾结尾

称呼免费有两组输入。MATLAB创建了一个包含所有传入的值的单元数组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类或外部定义的类,除了Java类、COM类和在MATLAB软件7.6版本之前定义的MATLAB类(换句话说,类定义不使用金宝appClassdef.关键词)。

提示

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

    function y = myFunction(inputArg1) arguments inputArg1 (1,1) double end…
    对于此功能,如果要传递字符串“123”作为输入参数,MATLAB将字符串转换为数值123.类型

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

    • 避免将字符串转换为数字值,使用mustBeAMustBefloat., 或者Mustbenumeric.

    • 若要避免将数值转换为字符串,请使用Mustbetext.MustbetextScalar., 或者MustbenonzerolengtyText.

    • 避免大小转换,使用Mustbevector.mustBeScalarOrEmpty

在R2019B中介绍