M文件可分为脚本M文件(简称脚本文件)和函数M文件(简称函数文件)两大类,其特点和适用领域均不同。
脚本文件
脚本文件是由MATLAB语句构成的文本文件,以.m为扩展名。运行命令文件的效果等价于从MATLAB命令窗口中按顺序逐条输入并运行文件中的指令,类似于DOS下的批处理文件。脚本文件运行过程所产生的变量保留在MATLAB的工作空间中,脚本文件也可以访问MATLAB当前工作空间的变量,其他脚本文件和函数可以共享这些变量。因此,脚本文件常用于主程序的设计。
例题
编写脚本文件,对数a、b、c进行排序,并按从大到小的顺序输出。
% compareABC.m
a = input("Enter a:");
b = input("Enter b:");
c = input("Enter c:");
sort([a,b,c],'descend')
函数文件**
函数文件是M文件的另一种类型,它也是由MATLAB语句构成的文本文件,并以.m为扩展名。MATLAB的函数文件必须以关键字function语句引导,其基本结构如下:
function [返回参数1,返回参数2,....] = 函数名(输入参数1,输入参数2,...)
% 注释说明语句段,由%引导
输入、返回变量格式的检测语句
函数体语句
函数文件具有如下特点。
(1)函数名由读者自定义,与变量的命名规则相同。
(2)保存的文件名必须与定义的函数名一致。
(3)读者可通过返回参数及输入参数来实现函数参数的传递,但返回参数和输入参数并不是必须的。返回参数如果多于1个,则应该用中括号“[]”将它们括起来;输入参数列表必须用小括号“()”括起来,即使只有一个输入参数。
(4)注释语句段的每行语句都应该用%引导,%后面的内容不执行。用户可用help命令显示出注释语句的内容,用于函数使用前的信息参考。
(5)如果函数较复杂,则正规的参数格式检测是必要的。如果输入或返回参数格式不正确,则应该给出相应的提示。
(6)函数中输入和返回参数的实际个数分别有MATLAB内部保留变量nargin和nargour给出,只要运行了该函数,MATLAB将自动生成这两个变量,因此用户编程时可直接使用。
(7)与一般高级语言不同的是,函数文件末尾处不需要使用end命令。
例题
编写函数文件,实现一个n行m列矩阵,使得该矩阵第i行第j列元素值为1/(i+j-1)。要求在编写的函数中实现如下几点:
(1)如果只给出一个输入,则会自动生成一个方阵;
(2)在函数中给出合适的注释信息;
(3)检测输入和返回变量的个数,如果有错误则给出错误信息。
% makeMatrix.m 函数文件
function A = makeMatrix(n, m)
% makeMatrix
% 实现一个n行m列矩阵,使得该矩阵第i行第j列元素值为1/(i+j-1)
% A = makeMatrix(n,m) 创建一个n行m列矩阵
% A = makeMatrix(n) 创建一个n阶方阵
if nargout > 1
error('Too many output arguments!');
end
if nargin == 1
m = n;
elseif (nargin ==0) ||(nargin > 2)
error('Wrong number of input arguments!');
end
A = zeros(n,m);
for i = 1:n
for j = 1:m
A(i,j) = 1/(i+j-1);
end
end
end
% callfunction.m 脚本文件
A = makeMatrix(2,3); %调用函数
disp(A)