函数是可以定义输入参数或返回输出变量的M-文件。M-文件和函数的名称必须一致。函数只执行自己工作空间内的变量,对于超越工作范围的变量,你要使用MATLAB命令提示符。
rank是一个很好的例子。rank.m文件可以在toolbox/matlab/matfun目录里获得。
toolbox/matlab/matfun
可用以下命令查看文件
type rank
以下是文件内容。
function r = rank(A,tol)
% RANK Matrix rank.
% RANK(A) provides an estimate of the number of linearly
% independent rows or columns of a matrix A.
% RANK(A,tol) is the number of singular values of A
% that are larger than tol.
% RANK(A) uses the default tol = max(size(A)) * norm(A) * eps.
s = svd(A);
if nargin==1
tol = max(size(A)') * max(s) * eps;
end
r = sum(s > tol);
函数M-文件的第一行以关键字function开头。它给出函数名和变元的顺序。在此情况下,有最多两个输入变元和一个输出变元。
下面的几行,到第一个空格或可执行,都是提供帮助文本的注释行。输入以下语句则把这些行输出
help rank
帮助文件的第一行是H1行,当你用lookfor命令或在目录请求帮助时MATLAB会显示出。
文件其余部分是定义函数的可执行MATLAB代码。类似第一行的变量r,A和tol,函数体中引入的变量s对于函数也是局部变量;它们在MATLAB工作空间里独立于任何变量。
此例说明了MATLAB不同于其他程序语言的一个方面–一个可变的变元数目。有几种方法可以使用rank函数。
rank(A)
r = rank(A)
r = rank(A,1.e-6)
许多M-文件都这样工作。若无输出变元提供,结果保存于ans。若第二个输入变元未提供,则函数计算一个默认值。在函数体内,有两个名为nargin和nargout的数量可用,它们告诉你在某特定应用中输入或输出的变元个数。rank函数用nargin,不用nargout。