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个文件,这确实有些太麻烦了。那么如何才能简便一些呢?可将脚本改为函数格式,但由于并不打算正式使用这个函数,所以名字可以随便写,只要在脚本文件前面加这样一句就可以了:
这是一个最简单的函数定义形式,用这句话可以方便地“蒙混过关”。