3.2.1 程序构成

3.2.1 程序构成

MATLAB程序类似于批处理语言,只是MATLAB命令的集合可以没有任何结构[3],这一点可参见前面举的各个例子。

一般在Editor中输入MATLAB命令的集合,作为程序,保存成一个.m文件,这种文件称为script(脚本文件)。在Editor中执行或者在Command Window中以文件名的形式输入,均可执行此段程序,得到结果。在MATLAB的Command Window中,.m文件就是“可执行文件”。

对于.m文件名的取名,有两点要注意:第一,不能以数字开头;第二,文件名尽量不要与MATLAB已有的函数重名。否则,程序将“屏蔽”掉MATLAB已有的函数,这一点在前面已经述及。

MATLAB程序也可以写成函数的形式[4],这时程序称为函数文件。函数文件要有一定的格式,需以下面语句开头:

Function是MATLAB中定义函数的关键字,Fun_name是自定的函数的名字,input和output分别为函数的输入和输出参数。

例9:Function举例。

这个函数要将一个矩阵在x方向颠倒。将此文件保存成swap_t1.m文件,然后进行如下试验。

在Command Window中执行

接着执行

可见,矩阵在x方向已经被颠倒。再输入

这表明:定义一个函数,如果调用,函数名是文件名,而非定义的函数名,这一点要特别注意。一般情况下,为了避免混淆,应尽量将函数名和文件名保持一致。

函数定义中紧接着第一行的注释,可以用help命令显示出来。这部分一般写上函数的功能和用法,以及应用举例。以往在help显示的MATLAB函数的帮助信息,都是写在这个位置的注释。

如果输入

则输出为

这正是写在函数定义例子中的注释。

上文已述及,函数调用名以文件名为准。可以在一个文件中定义多个函数,但只有第一个函数有效。那么,在一个文件中定义多个函数有用吗?答案是肯定的,后面的函数都可以在同一文件的第一个函数中以函数定义名调用,为第一个函数的编程服务。

例10:swap_t2.m文件举例。

此例子中,swap_t2函数的定义用到了swap_test1函数。

但要注意一个问题,即一段无函数结构的MATLAB代码之后不能跟着一个或若干个函数定义。

例11:无函数结构的代码之后不能跟着一个或若干个函数定义。

若程序如下:

则在执行时会输出错误:

错误信息显示,函数不能在两个地方定义:一个是在Command Window的即时执行条件下,另一个是在脚本文件中(即无结构的MATLAB程序中)。

在脚本文件中定义函数是初学者常犯的错误。但很多时候,在脚本文件中定义函数又是必要的。按照前面的说法,如果要定义10个函数,需保存10个文件,这确实有些太麻烦了。那么如何才能简便一些呢?可将脚本改为函数格式,但由于并不打算正式使用这个函数,所以名字可以随便写,只要在脚本文件前面加这样一句就可以了:

这是一个最简单的函数定义形式,用这句话可以方便地“蒙混过关”。