MatLab与控制系统仿真(重点编程)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第4章MatLab的程序设计
MatLab是一个工具、开发平台,同时它也是一门编程语言。与在命令窗口用交互的方式工作相比,通过程序运行来解决实际问题,其效率更高,因此,凡是复杂的、大型的应用都是以程序的方式执行。相对其它高级语言,MatLab更简单、编程的效率更高、调试过程也更容易。
MatLab中的程序文件是以m为后缀,所以通常将MatLab的程序文件称为m文件。MatLab提供了两种形式的m文件,即:脚本(Script)式m文件(就简称m文件)、函数型m文件。在MatLab中已经嵌入了一个功能强大的集成开发环境——m文件编辑器,用它来进行程序的编辑、修改、调试、运行等,完成应用开发工作。
4.1 MatLab程序设计基础
通过前面内容的学习,大家对MatLab已经有了一个初步的认识和印象,到目前为止,我们都是在“命令”窗口中,以交互的方式运行,完成我们的工作。实际上简单的m文件,就是一个批处理程序,它是若干条命令的集合。
例:
4.1.1 M文件规则和属性
函数M文件必须遵循一些特定的规则。除此之外,它们有许多的重要属性,这其中包括:
1. 函数名和文件名必须相同。例如,函数fliplr存储在名为fliplr.m文件中。
2. MATLAB头一次执行一函数个M文件时,它打开相应的文本文件并将命令编辑成存储器的内部表示,以加速执行以后所有的调用。如果函数包含了对其它函数M文件的引用,它们也同样被编译到存储器。普通的脚本M文件不被编译,即使它们是从函数M文件内调用;打开脚本M文件,调用一次就逐行进行注释。
页脚内容1
3. 在函数M文件中,到第一个非注释行为止的注释行是帮助文本。当需要帮助时,返回该文本。例如,» help fliplr返回上述前八行注释。
4. 第一行帮助行,名为H1 行,是由lookfor命令搜索的行。
5. 函数可以有零个或更多个输入参量。函数可以有零个或更多个输出参量。
6. 函数可以按少于函数M文件中所规定的输入和输出变量进行调用,但不能用多于函数M文件中所规定的输入和输出变量数目。如果输入和输出变量数目多于函数M文件中function语句一开始所规定的数目,则调用时自动返回一个错误。
相对于函数m文件,脚本式m文件就简单多了,它没有严格的格式要求,只要将有关的命令或函数一一敲入即可,但是还是有几个问题需要注意:
1. m文件的名称不得与MatLab的内部函数同名、第一个字符不得为数字(这点与变量的命名规则相同);
2. 最好在文件的头部加上注释,对该m文件的作用、功能作一个简要说明,而在一些重要命令行后也加上注释行,以方便使用者阅读、查找;
3. 要特别注意m文件的保存路径或位置,如果不是保存在MatLab默认的路径下,可以使用addpath函数来设置、添加路径,否则,m文件不能运行。
脚本式m文件与函数m文件还有一个重要区别:脚本式m文件中的变量均为全局变量,而函数m文件中的变量则是局部变量。这可以从这两种程序文件运行后在Workspace中留下痕迹看出。当然,在函数m文件中也可以专门将某些变量定义为全局变量(关键字是:global)。不过,在使用全局变量(函数m文件中)时应特别注意:
①.全局变量需要函数体的变量赋值语句之前定义或说明;
②.全局变量名最好是大写,而且要尽量长,能反映它本身的含义;
页脚内容2
③.实际编程时,全局变量也要尽可能少用,因为一旦它在一个地方被改变,那么其它包括该变量的函数中都得改变,有时可能会出现意想不到情况。
4.1.2 M文件的组成
函数M文件实例:
function f=fact(n)%函数定义行
%Compute a factorial value %H1行
%FACT (N)return the factorial of N,
%usually denoted by N %帮助文本
%Put simply,FACT (N)is PROD (1:N )%注释
f=prod (1:N ); %函数体
一个完整的函数M文件通常包括:
①. 函数定义行:定义函数名以及输入、输出变量的数目和顺序;
②. H1行:对该函数进行概括性的描述(可用help和Lookfor命令调出此行);
③. 帮助文本:这是比H1行更详细的帮助信息,使用help命令时与H1行一起显示;
④. 函数体:这是函数M文件的主要部分,程序的功能都在此部分实现;
⑤. 注释:对程序行的意义进行解释(与H1行一样都是用%开头)。
有的函数M文件还包含return语句!
页脚内容3
4.1.3 M文件编辑器介绍
1. m文件编辑器的启动
★在命令窗口中敲入:edit
★点击工具栏中的新建图标
★从菜单file/new/M-file中启动
2. m文件编辑器的界面
★菜单栏
★工具栏
★编辑窗口
3. m文件的运行
★在m文件编辑器内
★在命令窗口中运行
在命令窗口直接输入m文件名,回车即可,但函数m文件通常还必须带参数才能运行,也可以利用feval函数来运行函数m文件,其格式如下:
feval('functionname', arg1, arg2, ...)
对于脚本式m文件,还可以用run函数在命令窗口中运行存在的m文件。格式:
run ‘m文件名’(不必带文件的后缀)
页脚内容4
4.1.4 对函数M文件的调用
凡是以函数m文件形式保存的程序文件,均可以被其它函数m文件或脚本m文件所调用。例:①先定义一个函数m文件:
%计算阶乘
function y=jiech(n)
y=1;
for i=1:n
y=y*i;
end
②编写m文件实现对上述函数m文件的调用:
function z=dy(n)
z=log(jiech(n));
4.1.5数据类型与结构
MatLab的数据类型前面已经介绍,下面是它们之间的关系图:
页脚内容5