主要内容

参数

声明函数参数验证

语法

参数argName1(维度)数据类型{validators}=defaultValue...argNameN……end arguments (repeat)…结束

描述

例子

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

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

argName(维度)数据类型{validators}=defaultValue

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

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

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

  • {验证程序}—用逗号分隔的验证函数列表,例如mustBeNumericmustBeScalarOrEmpty,用花括号括起来。当输入参数与其条件不匹配时,验证函数出错。不像数据库类型,验证函数不修改输入参数。有关验证函数的列表,请参见参数验证功能

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

名称-值参数,arg使用表单nv.name,在那里nv是函数签名和名称参数块中的参数名称。例如,定义一个函数,该函数使用名为选项

y=myFunction(x,选项)

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

参数x options.Name1 options.Name2 end

,以获取更多使用信息参数块一般,见参数块语法

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

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

函数只能包含一个重复参数块。如果函数同时包含重复参数和名称值参数,请在重复参数块之后的单独参数块中声明名称值参数。

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

例子

全部折叠

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

函数[m s] = twoStats (x)参数x(1,:){mustBeNumeric}结束m=平均值(x,“所有”);s =性病(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验证函数抛出一个错误。

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

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

申报myRectangle函数与选项作为结构名称。两个领域选项,线型线宽,是函数的名称值参数中的名称:

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

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

myRectangle(4、5)myRectangle(4、5、线型=":",线宽=2)我的矩形(4,5,线宽=2,线型=":") myRectangle(4、5、线型=":") myRectangle(4、5、线宽= 2)

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

重复参数是单个参数或参数组,可以在函数调用中重复零次或多次。这个弗雷帕特函数接受重复的参数组x,Y,风格.限制输入参数xY到双精度值的向量或可转换为双精度值的值。限制风格顺其自然”——“":"

函数fRepeat(x,y,style)参数(重复)x(1,:)双倍Y(1,:)双倍风格{mustBeMember(样式,[“-”,“:”])}结束%重塑输入单元阵列并调用绘图函数z =重塑([x, y,风格]1 []);如果~isempty(z)图(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之前定义的类除外(换句话说,不使用金宝appclassdef关键字)。

提示

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

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

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

    • 要避免将字符串转换为数值,请使用mustBeA,必须快活mustBeNumeric

    • 若要避免将数值转换为字符串,请使用必读,mustBeTextScalarmustBenonZeroLength文本

    • 要避免大小转换,请使用穆斯贝维克特mustBeScalarOrEmpty

在R2019b中引入