函数

优质
小牛编辑
139浏览
2023-12-01

函数是可以定义输入参数或返回输出变量的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。若第二个输入变元未提供,则函数计算一个默认值。在函数体内,有两个名为narginnargout的数量可用,它们告诉你在某特定应用中输入或输出的变元个数。rank函数用nargin,不用nargout