PSYCHTOOLBOX工具箱及MATLAB编程实例
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

第4章 程序设计

MATLAB中所编写的程序文件以.m为扩展名,统称为M文件,其形式有两种:脚本和函数,前者是 MATLAB 语句序列,不能接受参数,也不返回结果,但可以将其中所定义的变量存储在工作区中;后者可以接受参数和返回结果。由于函数比脚本更灵活,更具有普适性,所以应用较广。MATLAB提供了程序开发的编辑工具Editor,通过菜单File→New→Script或File→New→Function可以打开程序编辑器,也可以在命令窗口中直接输入edit指令打开如图4-1所示的编辑器,其编辑功能与Windows的记事本相似,但具有语法着色功能(关键字用不同颜色表示),我们可以先忽略不太熟悉的界面和菜单。

图4-1 程序编辑器

脚本的名称即为M文件的文件名,而函数名称则分为,当函数是主函数时,函数名称与M文件名相同(可以不同,但建议取相同的名称),而子函数则与M文件名不同,甚至可以没有名称(匿名函数)。而实际上,脚本也可以使用函数的形式,只不过不需要输入参数和返回参数之类的内容罢了。

4.1 M文件的建立

M 文件可以使用任意的文本编辑器来创建,在保存文件时必须用.m 作为扩展名,建议使用MATLAB自带的程序编辑器(Editor)。

在程序编写时,为了便于自己或他人知晓脚本或函数的功能,可以使用注释来对程序代码和参数的含义进行说明。M文件具有建议的规范格式,对于函数而言,示例如下。

function f = fact(n)                     函数定义行,脚本无此行,否则为函数
% Compute a factorial value.             H1行
% FACT(N) returns the factorial of N,    帮助文本
% usually denoted by N!
% Put simply, FACT(N) is PROD(1:N).      注释
f = prod(1:n);                           函数体
disp(f); %Display the result             行内注释
%{
The above function f defines the factorial value of an integer, for convenient,
  just use the function prod to compute the product of elements.
%}
end %函数结束

(1)函数定义行负责定义函数的名称以及输入和输出参数的个数和顺序,函数名称最好一目了然,即从名字上就可以大略知晓其功能;输入参数需放在()内,如果有多个参数,则用逗号分隔开;输出参数如果有多个,则需将它们放置在[ ]内,多个输出参数间用空格或逗号分隔,函数定义语句的格式如下所示:

function [out1, out2, ...] = myfun(in1, in2, ...)

其中function是关键字;myfun是函数名;in1, in2是输入参数;out1,out2是输出参数。

(2)H1行为紧跟函数定义行之后以%打头的一行,在命令窗口输入help 函数名,可显示该行信息,一般用作函数功能的说明。

(3)帮助文本是H1行接下来以%打头的一行或多行,直到第一个非百分号(%)打头的行结束;注意H1行和帮助文本之间不能有空行,否则使用help命令无法获取帮助文本信息。

(4)注释行以%开始,可以单独作为一行,也可以放在代码的末尾,如果注释的信息较多需要用多行时,则使用%{ 和 %}符号对。当然你可以省略掉所有注释和帮助文本以及H1行,这不会妨碍程序的正常运行。