第五章自定义函数

5.3选择性参数

第138页

5.3选择性参数

许多的MATLAB函数都支持选择性输入参数和输出参数。我们调用plot函数,输入参数既可以少到2个,也可以多到7个参数。从另一方面说,函数max既支持一个输出参数,也支持两个输出参数。如果只有一个输出参数,max将会返回函数的最大值。如果有两个输出参数将会返回数组的最大值和最大值所在的位置。如何知道一个MATLAB函数有几个输入输出参数呢,以及函数相应的功能呢?

在MATLAB中有八种专门的函数用于获取关于选择性参数的信息和用于报告这些参数的错误。其中的六个函数我们在这里介绍,其余的两个我们将会在第七章讲单元数据类型时介绍。

nargin这个函数返回调用这个函数时实际输入参数的个数。nargout这个函数返回调用这个函数时实际输出参数的个数。nargchk如果一个函数被调用时参数过多或过少,那么nargchk函数将返回一个标准错误信息。error显示错误信息,并中止当前函数的执行。如果参数错误是致命的,这个函数将会被调用。warning显示警告信息,并继续当前函数的执行。如果参数错误不是致命的,则继续执行当前函数的同时,调用本函数。inputname这个函数将会返回第n个输入参数的实际调用变量名。

函数nargin和nargout只用在用户自定义函数中。当他们被调用时,这些函数将会分别返回实际输入、输出参数的个数。如果一个函数在被调用时含有过多或过少的参数,函数nargchk将会产生一个包含标准错误的字符串。此函数的语法如下:


message = nargchk(min_args, max_args, num_args);

其中min_args是指参数的最小个数,max_args是指参数的最大个数,num_args是指参数的实际个数。如果参数的个数不在允许的范围,将会产生一个标准的错误信息。如果参数的个数在允许的范围之内,那么这个函数将返回一个空字符。

函数error是用于显示标准的错误信息和用于中止导致错误信息的自定义函数的一种标准方式。这个函数的语法是error('msg'),其中msg是一个包含错误信息的字符串。当error函数执行,它将会中止当前函数,并返回到键盘输入状态,在命令窗中显示出错误信息。如果这个信息字符中为空,error函数将什么也不做,当前函数继续执行。函数error与函数nargchk配合,当有错误发生时,error将产生一个信息字符串,当没有错误时,error将产生一个空字符。

函数warning是显示警告的函数名及所在行的信息,并继续执行当前函数。此函数的语法为warning('msg'),其中msg是指含有警告信息的字符串。当执行warning函数时,它将在命令窗口显示警告信息,列出警告的函数名及所在行的信息。如果信息子符串为空,warning将什么也不做。同时,当前函数将继续执行。

当一个函数被调用时,inputname函数将会返回实参的名字。inputname函数的语法为:


name = inputname(argno);

其中argno是参数的序号。如果这个参数是一个变量,那么返回将只是变量名。如果参数是一个表达式,那么这个函数将会返回空字符。例如考虑下面的函数:


function myfun(x, y, z)

    name = inputname(2);

    disp(['The second argument is named ' name]);

当这个函数被调用时,结果如下(注:语句myfun(dog,cat)和myfun(1,2+cat)执行前,变量dog,cat必须赋初值。否则执行语句将出错。)


>> myfun(dog,cat)

The second argument is named cat

>> myfun(1,2+cat)

The second argument is named

如果你想了解更多MATLAB的编程技巧,可以参考以下资料:MATLAB编程技巧,这里有更详细的例子和解释,帮助你更好地掌握这些概念。

对自定义函数和错误处理感兴趣?可以看看这篇MATLAB自定义函数,里面有更多关于如何创建和管理自定义函数的实用技巧和建议。