-
1 文档
-
2 视频
-
3 PPT
-
4 小测试
此前所讲述的命令都是在命令窗口中直接进行的,是交互式工作形式,操作简单,结果明确,但只适用于一些较简单的计算。为了充分发挥Matlab的功能,同其他程序设计语言一样,Matlab提供了文件编辑器,可以进行程序设计。Matlab的程序代码文件称M文件,以.m为扩展名,是ASCII文件,有函数(Function)和脚本(Scripts)两种格式。
Matlab的脚本文件我们可以理解为,把要在命令窗口执行的一系列Matlab命令语句,集中放在一个程序文件内,称为脚本文件,执行时,只需输入脚本文件名,Matlab就会自动执行脚本文件中的命令语句。脚本文件有如下特点:
1. 脚本文件中命令语句的执行等同于在命令窗口中执行;
2. 脚本文件中命令语句所涉及的变量存储在工作空间(Workspace)中,在工作空间窗口中可以访问、调用、编辑、删除这些变量。
3. 脚本文件可以访问工作空间(Workspace)中数据变量。
[例2-1]编写脚本文件,求100以内的斐波那契数列。
%ffibno1.m
%Fibonacci series 斐波那契数列计算,每个元素都等于其前两个元素之和。
clear;close all;
n=100;
f=[1,1]; %定义f为斐波那契数列,初始时只有两个值为1的元素
i=1; %定义循环控制变量i
while f(i)+f(i+1)<100 %循环语句,计算当前数列最后两个元素和是否<100
f(i+2)=f(i)+f(i+1); %判断结果为真时,产生新的数列元素,补充到f数列后面
i=i+1;
end;
disp(f) %显示输出100以内的斐波那契数列
编辑完成保存到文件ffibno1.m中。主程序前通常是程序注释,说明程序功能,每行%开始,可以为中文或英文。程序文件主体由函数、命令组成,通常用“clear;close all”开始。流程控制语句采用缩进格式。程序文件中除注释外必须用半角英文字母和符号,文件名不允许用中文。执行时,只需在提示符后输入文件名即可,例如:
>> ffibno1
1 1 2 3 5 8 13 21 34 55 89
查看工作空间内的变量,存在f、i、n三个变量

图2-1工作空间窗口
函数文件可以完成相互调用等复杂功能。Matlab提供的标准函数大部分都是由函数文件定义的。函数的基本结构如下:
function [输出参数列表]=函数名(输入参数列表)
%H1行及帮助文本,说明函数功能及使用方法
函数体及注释
函数以function作为关键词开头一行是引导行,函数文件的命名规则与变量名相同。紧随函数引导行之后是以%开始的第一注释行称H1行,通常对函数功能进行简要描述,供lookfor关键词和help在线帮助使用。如果函数中有return语句,遇到该语句则结束函数返回,如没有return语句,则函数执行完后自动返回。
函数文件的特点主要有:
1. 它接收输入参数,返回输出参数,进行变量传递;
2. 除用global声明,函数只能访问函数本身的工作空间中变量,无论Matlab命令窗口还是其它函数都不能对该函数工作空间中变量进行访问,当函数执行完毕后,变量被清除,空间被释放,即函数工作空间是独立的、临时的。
3. 函数文件的名称必须和该文件中定义的函数名相同。
[例2-2] 编写函数,求斐波那契数列。
function f=ffibno2(n) %函数定义行
% Fibonacci series 斐波那契数列计算,每个元素都等于前两个元素之和。%H1行
% f(1)=1,f(2)=1,输入n值,计算小于n的ffibno数列 %帮助文本
f=[1,1];i=1; %以下为函数体
while f(i)+f(i+1)<n;
f(i+2)=f(i)+f(i+1);
i=i+1;
end;
其中,function f=ffibno2(n)为函数定义行,f是输出变量,n为输入变量。帮助文本一般说明函数功能及使用说明,函数文件保存时,系统自动提示给出函数名做文件名保存。本例必须以文件名ffibno2.m保存。如下实现函数调用。
>> clear
>> a=100;
>> y=ffibno2(a)
y =
1 1 2 3 5 8 13 21 34 55 89
调用时,“a=100;”定义变量a,值等于100;语句“y=ffibno2(a)”实现了对ffibno2函数的调用,变量a的值100传递给了函数的输入参数n,经函数运算得到f值,函数将输出变量f的值传递给工作空间的变量y,函数运行结束,此时观察工作空间只有a、y两个变量。

图2-2函数调用后的工作空间
对于函数的调用者而言,函数的内部的局部变量f、i、n是不可视的。函数内部变量只在函数内部存在,即是局部变量,函数调用结果后,释放函数的工作空间,f、i、n就不存在了。执行如下语句,结果没有变化。
>> a=100;n=10;
>> y=ffibno2(a)
y =
1 1 2 3 5 8 13 21 34 55 89
也就是说,完全可以定义与函数内部变量名称完全相同的变量,两者没有任何关系。工作空间定义的n对函数的运行没有任何影响。
M文件的编辑可以应用Matlab文本编辑器进行,从“主页”的菜单条中选择“新建”,在其下拉菜单条中选择“脚本”或“函数”,即可打开编辑器窗口,进行新建脚本文件或函数文件的编辑。在菜单中选择“打开”,则可打开已存在的脚本文件或函数文件。

图2-3新建函数文件的编辑窗口
当脚本文件编辑完成后要执行时,可以直接点击图2-3菜单条中的“运行”按钮或在命令窗口提示符“>>”后输入脚本文件名。函数文件一般不能直接点击“运行”来执行。
M文件编辑器进行编辑时,注意应用以下两点编辑方法,提高效率。
1. 编辑文件时,选择某些命令语句后单击鼠标右键,在弹出菜单中选择“注释”,将在所选内容前加上“%”成为注释,相对应,选中有注释的命令语句,单击鼠标右键菜单中的“取消注释”,则删除命令语句前面的“%”,恢复为正常语句,这一功能方便程序调试。
2. 在历史命令窗口中,可以选择某些命令语句复制拷贝到M文件中。方法是单击要选中内容的开始行命令语句,再按shift同时单击结束行语句,就选中了内容,单击鼠标右键,在弹出的菜单中选择处理方式。

