4.5 M文件变量检测

不同M文件之间的数据的传递是以变量为载体来实现的,数据的保存和中转则都是以空间为载体来实现的。M文件的变量的检测与传递是检验运算关系和运算正确性的有力保障。

4.5.1 输入输出变量检测

MATLAB提供了输入输出变量相关的检测命令,如表4.5所示:

表4.5 输入输出变量相关的检测命令

注:nargin和nargout与程序流控制命令配合,对于不同数目的输入输出变量,函数可实现不同功能。

4.5.2 可变数量输入输出

MATLAB中的许多命令或函数的输入变量可以是任意数量,varargin和varargout函数分别可以实现函数的输入输出变量为可变的数目。

例4-24,可变数量输入示例。

建立M函数文件ex4_23fun.m,内容如下:

    function ex4_23fun(varargin)
      fprintf('Number of arguments: %d\n', nargin);
      celldisp(varargin)

在命令行窗口输入:

    ex4_23fun (magic(3), 'This function is good.', eps)
    disp('NEXT:')
    ex4_23fun(1.1)

输出结果如下:

    Number of arguments: 3
    varargin{1} =     8      1      6
                3      5      7
                4      9      2
    varargin{2} =This function is good.
    varargin{3} = 2.2204e-16
    NEXT:
    Number of arguments: 1
    varargin{1} = 1.1000

例4-25,可变数量输出示例。

建立M函数文件ex4_24fun.m,内容如下:

    function [s, varargout] =ex4_24fun (x)
    nout = max(nargout,1) -1;
    s = size(x);
    for k=1:nout
      varargout{k} = s(k);
    end

在命令行窗口输入:

    [s, rows, cols] = ex4_24fun (rand(3,5,2))

输出结果如下:

    s =      3      5      2
    rows =   3
    cols =   5