文件是信息的保存方式,包括程序文件、库文件、数据文件数脊等。广义上说,设备也包含在文件的定义里面。
由于程序规模可能非常大,编程时往往将将代码划分成若干模块,每一模块对应一个子功能,这样也方便实现程序代码的复用。这一一个模块,在形式上就体现为函数。——如果规模再大一些,可能还需要将一些相关的类封闭成类库,以方便调用,进一步提高程序的复用性。
这些只是经验,谈不上理论,也没必要去钻牛角尖。程序多写一些,你自然就明白了。
程序是由多个文件链接而成,在linux下是 .o .a .so 文件链接而成。在windows下是由 .o .dll 等链接而成。 函数包含在文件里,当斗敏猛一个文件要用到另一个文件中的函数时,空桥就需要在该文件中通过#include 来包含另一个文件对应的头文件(.h文件)如:#include "a.h",或者通过extern 的方式如:extern void a()但是,无论采用哪种方式,都必须在链接过程中链接对应的其他文件。编译器会通过对每个文件中的符号(非static的函数和全局变量)的检查来判断哪个符号在哪个文件里,然后按照相拿模应的编译参数来链接文件。Matlab语言编写的可以在Matlab环境中运行的程序称为 M 文件。M 文件用扩展名.m结尾,可在命令行中执行,也可被其它程序调用,我们可以使用任何文本编辑器编辑M文件。M文件分为两种:命令文件和搭正陵函数文件,它们有各自的特点。
1.5.1 命令文件
命令文件没有输入参数也没有输出参数,只是一些Matlab命令和函数的组合。命令文件可以 *** 作工作空间的变量,也可以生成新的变量,但是当命令文件执行结束后新变量将保存在工作空间中,不会被自动清除。
例2-20:编写命令文件test_com.m,用于求解小于2000且为2的整数次幂的正整数。
解:
%test_com.m
F(1)=2
k=1
while F(k)<1000
F(k+1)= 2*F(k)
k=k+1
end
F,k
为了能够在命令窗口执行test_com命令,可以建立一个\MySample子目录,然后用命令窗口的【File】|【Set Path】菜单将该目录加入的Matlab的搜索目录中。这样就可以直接在Matlab命令窗口键入test_com执行这个命令,其运行结果为:
F = Columns 1 through 6
2 4 8 16 32 64
Columns 7 through 10
128 256 5121024
k =10
1.5.2 函数文件
函数接收输入参数,返回输出参数。函数文件与程序知戚文件类似也是以 逗.m地 为扩展名的文本文件,而程序文件与函数文件的主要区别在于,函数允许通过数值进行参数传递,而且函数使用局部变量而不是全局变量 *** 作。另外函数文件的第一行必须包括 逗function地 这个关键字。函数文件的文件名必须和函数定义的函数名称相同。
MATLAB的函数M文件通常由以下几个部分组成:
1 函数定义行
函数M文件的第一行用关键字逗function地把M文件定义为一个函数,并指定它的名字,并且与文件名必须相同,同时定义了函数的输入和输入参数。输入参数的定义用小括号(),如果有多个输入参数则用逗号分隔;输出参数的定义用中括号[],如果有多个输出参数则用逗号分隔。
2 H1行
所谓H1行指帮助文本的第一行,它紧跟在定义行之后并以逗%地符号开头,用于概括说明函数名和函数的功能。在命令窗口用 lookfor 命令时将显示所清迟寻求函数的H1行。
3 函数帮助文本
帮助文本指位于H1行之后函数体之前的说明文本,它同样以逗%地符号开头,一般用来比较详细地介绍函数的功能和用法。在命令窗口用help命令时将显示函数的H1行和所有帮助文本。
4 函数体
是函数的主体部分,包括进行运行和赋值 *** 作的所有MATLAB程序代码,其中可以有流程控制、输入输出、计算、赋值、注释以及函数调用等 *** 作。
5 注释
除了函数开始独立的帮助文本外,还可以在函数体中添加对语句的注释。注释必须以逗%地符号开头,MATLAB在编译执行M文件时把每一行中逗%地后面的全部内容作为注释不进行编译。
1.5.3 子函数
一个 M 文件中可以定义多个函数,其中第一个定义的函数称为主函数,主函数名必须与M文件名相同,其它函数称为子函数。子函数只能被定义它的文件中的函数调用,其它函数和文件不能调用。
1.5.4 局部函数
把一些文件放在private目录下,那么这些文件中定义的函数就是局部函数。局部函数只能被其父母目录中的函数或文件调用,其它函数和文件无权调用。
1.5.5 M文件的执行
当Matlab遇到一个新的名称(命令、函数、变量)时,按如下次序查找这个名称:
(1) 当前的工作空间;
(2) 子函数名称
(3) 局部函数名称;
(4) set path指定的路径。
要想使自己编写的函数或命令能够在命令窗口自由的使用,一个比较好的处理方法是建立一个目录,并把这个目录加到Set Path指定的目录中,将自己编写的 M 文件都存放到这个目录中。
例1-21:编写函数求。
解:function r=AddJc(n)
%AddJc.m 函数AddJc(n)求1到n的阶乘的和
% n为输入参数,Jc为子函数
r=0k=1
while k<=n
r=r+Jc(k)
k=k+1
end
%Jc(m)求解m的阶乘,是文件内部函数(子函数)
function s=Jc(m)
s=1k=1
while k<=m
s=s*k
k=k+1
end
将AddJc.m保存到工作目录中,在命令窗口可以直接使用AddJc函数,但是不能使用子函数Jc。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)