第10章MAT六B程序设计87学习资料

上传人:sunfu****g7806 文档编号:138067379 上传时间:2020-07-13 格式:PPT 页数:78 大小:362.50KB
返回 下载 相关 举报
第10章MAT六B程序设计87学习资料_第1页
第1页 / 共78页
第10章MAT六B程序设计87学习资料_第2页
第2页 / 共78页
第10章MAT六B程序设计87学习资料_第3页
第3页 / 共78页
第10章MAT六B程序设计87学习资料_第4页
第4页 / 共78页
第10章MAT六B程序设计87学习资料_第5页
第5页 / 共78页
点击查看更多>>
资源描述

《第10章MAT六B程序设计87学习资料》由会员分享,可在线阅读,更多相关《第10章MAT六B程序设计87学习资料(78页珍藏版)》请在金锄头文库上搜索。

1、第10章 MATLAB7.0程序设计,MATLAB7.0拥有强大的数值计算和图形可视化功能。在之前的章节,用户主要是利用命令窗口和交互式对话框(如图形窗口)把想法和意图传递给机器,让系统执行操作。这种操作虽然比较便捷,但是只能解决代码行数少的简单问题,对于大型问题就显得捉襟见肘。针对此问题,MATLAB作为一种高级应用软件,还提供了特有的交互式的程序语言,即MATLAB语言。用户可以应用MATLAB语言编写扩展名为.m的文件,方便灵活地整合大量程序代码,从而解决大规模的工程问题。,主要内容包括:M文件的特点和类型、变量、函数以及MATLAB程序结构和设计等基本内容。,第10章 MATLAB7.

2、0程序设计,10.1 M文件,M文件就是一系列相关代码组成的一个扩展名为.m的文件,用户可以在MATLAB自带的M文件编辑窗口或者普通文本编辑器中编写代码,然后以“文件名+.m的后缀名”保存在MATLAB的工作空间,以后在MATLAB命令窗口直接调用文件名,就可以执行文件中一系列代码所综合表示的操作。,10.1.1 M文件的结构,M文件是一个文本文件,用户可以通过单击MATLAB主界面【FileNewM-File】菜单选项或单击工具栏【New M-File】图标,新建一个M文件。,10.1.3 脚本式M文件,脚本文件可以理解为较为简单的M文件,因为其没有输入和输出变量。下面用一个简单的例子说明

3、如何编写和运行脚本文件 edit 在M文件中输入如下代码并保存为s.m文件 r=3.33; s=(r2)*pi 在工作窗口中点右键并点run(或按F5) 在Matlab命令窗口中观看运行结果,说明:脚本文件一般适应于大型程序的重复操作,对个别变量的修改只需在脚本文件中进行即可而不需要对多数相同的代码进行重复操作。 用户可以将需要重复输入的所有命令按顺序放到一个扩展名为.m的文本文件下,每次运行时只要输入该M文件的文件名即可。 用户自己创建的脚本文件的文件名要避免与MATLAB 7的内置函数和工具箱中的函数重名,以免发生内置函数被替换的情况。(因为脚本文件中的变量多数是全局变量它与Matlab程

4、序共用一个工作空间),8,脚本式M文件应用举例,脚本式M文件绘制一个正弦曲线, Edit x=-2*pi:0.05:2*pi; y=sin(x); plot(x,y,c+) legend(正弦曲线图) 保存文件名为jh.m: 在Matlab命令窗口中输入jh,10.1.4 函数式M文件,相对于脚本文件来说,函数文件稍显复杂。从外观上看来,函数文件只是在对应脚本文件的基础上,在文件中代码开始处多添加了一行函数定义行,函数文件都是以函数声明行“function”作为开始,其实质是:用户往MATLAB7.0函数库里边添加的子函数,即函数M文件中的变量都是局部变量,而非全局变量(除非使用特别形式声明)

5、,但是在函数运行期间失效,函数运行完毕之后,其定义的变量将从工作区间中清除,对于这一点,要注意和脚本文件的区别。,而脚本文件只是将一系列相关代码结合封装,没有输入参数和输出参数,即不自带参数,也不一定要返回结果。,10.1.4 M文件的组成部分及其功能,12,函数式M文件的组成部分,函数式M文件的组成部分。 调出edit窗口,在里边输入如下内容: function f = fact(n) %函数的定义行 % Compute a factorial value. %H1行 % FACT(N) returns the factorial of N, %帮助文本 % usually denoted

6、by N! % Put simply, FACT(N) is PROD(1:N). %注释 f = prod(1:n); % 函数体,函数式M文件说明,1、函数文件中的变量除特别声明外都是局部变量。 2、函数文件的函数名与文件名必须相同。 3、函数文件被调用时Matlab会专门分配一个临时工作空间,用于存储函数执行过程中的中间变量,当函数文件完成被调用的操作时,这个空间将被Matlab收回,空间中的变量也将被擦除,函数空间是独立的和临时的,这与脚本文件存在着本质的区别。,10.2 变量,变量(variables)是MATLAB中的重要概念,与程序设计有密切关系。因此,需要介绍: 变量的命名规则

7、、 MATLAB中特殊变量和关键字、 变量的分类, 不同类型变量的区别及使用范围、变量的检测传递以及变长度函数等。,10.2.1 命名变量,MATLAB中的变量不需要在使用前事先定义,但是必须遵循以下命名规则: 变量名区分大小写:HELLO和hello是不同的变量名。 变量名最多能包含63个字符,如超出限制,从第64个字符开始(包含),其后的字符都将被忽略;,变量名必须以字母开始,其后可以是任意数量的字母或下画线; 不允许出现标点符号,因为很多标点符号在MATLAB中有特殊的意义,如total name与total_name会产生完全不同的结果;系统也会认为total,name由于逗号的分隔,

8、不是一个变量。,10.2.2 MATLAB特殊变量,MATLAB预定义了若干特殊变量(Special Variables),这些变量具有系统默认的含义,如表所示。,10.2.3 MATLAB中关键字,关键字是MATLAB程序设计中常用的流程语句控制变量。MATLAB有17个系统关键字,在命令窗口输入指令iskeyword,就可以查询17个显示为蓝色的关键字:break,case,catch,continue,else,elseif,end,for,function,global,if,otherwise,persistent,return,switch,try,while。 如果把这些关键字作

9、变量名,MATLAB将会发出一条错误信息。, for=1000 ? for=1000 | Error: The expression to the left of the equals sign is not a valid target for an assignment. 如果一定要使用与这些关键字类似的词作为变量名,可以将这些关键字中的某个或者某些字母改成大写 WHILE=1 %WHILE和while含义不同,前者是用户定义变量,后者是关键字 WHILE = 1,10.2.4 不同类型的变量,MATLAB中的变量可分为以下3类。 局部变量(Local Variables):只在特定空间内

10、定义且有意义的变量。 全局变量(Global Variables):在多个空间可以调用和传递的变量。通过global指令来定义。 永久变量(Persistent Variables):只在函数文件中声明和调用,并在不同函数之间传递的变量。通过persistent指令来定义。,10.2.4 局部变量和全局变量说明,每个函数都有自己的局部变量,他们与基本工作空间中的变量是相互独立的,而且不同函数的局部变量是独立的,只能在函数内部使用 如果两个或多个函数想共用同一个变量,那么就可以用global将它声明成全局变量 global variables 全局变量的使用可以减少参数的传递,如果合理利用全局变

11、量,将可以提高程序的执行效率,如果要查看工作空间的全局变量,则输入whos global,可显示出全局变量 global x y x=36; y=78; z=5; p=21; whos global,MATLAB中,每一个函数有其独立的局部变量,这些临时定义的变量不被加载到MATLAB的工作空间中,与其他函数或是MATLAB基本工作空间中的变量互不影响。除非特别定义了全局变量或者永久变量,否则当函数调用结束时,所有局部变量将随之被擦除。 脚本文件没有独立的工作空间,与其调用系统共用一个工作空间。当在MATLAB的命令窗口调用脚本文件时,共用MATLAB基本工作空间;而当在函数中调用时,则使用函

12、数空间存储变量。所以当脚本文件使用空间中已存在的变量时,将改变变量的值。,10.2.4 局部变量和全局变量说明,应用举例:,(1)新建脚本文件,取名为GV1,在其中定义全局变量GV,调用disp函数输出全局变量和局部变量v1的值。 global GV disp(GV); disp(v1) (2)新建函数文件,取名为GV,在其中定义全局变量GV,调用disp函数输出全局变量的值。 function GV global GV disp(GV); disp(v1),应用举例:,(3)在Matlab命令窗口输入: global GV GV=1;v1=2; (4)运行脚本GV1。脚本文件中的全局变量GV

13、已被赋值为1,且由于脚本与Matlab共享工作空间,局部变量也被赋值为2. (5)运行函数GV。函数文件中的全局变量GV也被赋值为1.但v1没有被赋值,函数文件中的v1是局部变量与Matlab工作空间中定义的v1并不是同一个变量。,应用举例:,(6)在脚本文件中为GV和v1重新赋值,并运行脚本。 global GV GV=11;v1=3; disp(GV); disp(v1) (7)调用函数文件GV值改变,但是变量v1同样没有改变。,10.3 函数,函数是MATLAB中的一个重要概念,例如绘图函数plot、mesh、peak,三角函数sin、cos等在之前的章节曾多次调用。调用函数执行某种操作

14、是MATLAB的常用功能。函数的作用是使问题解决模块化,接受输入、输出参数,并返回结果。MATLAB7.0中创建和调用函数的方法有两种,一是命令窗口输入代码,另一个是编写M-函数文件。根据创建方法、调用方式以及功能的不同,函数可以进行分类,本节将介绍不同函数类型的函数包括:匿名函数、主函数、子函数和嵌套函数。,10.3.1 匿名函数,匿名函数是MATLAB函数的简易形式,这种函数没有函数名,且不是M文件,只包含一个MATLAB的表达式和输入、输出参数。用户可以直接在命令窗口输入代码,创建匿名函数。匿名函数的创建格式如下。 f=(arg1,arg2,.) expression 其中f为创建的函数

15、句柄,“arg1、arg2”为输入变量,“expression”为函数的主体表达式。 函数句柄是间接访问函数的手段,可以使用户调用函数变得简单,提高过程的效率和可靠性,避免或减少程序设计中的冗余,并在执行函数调用过程中保存相关信息。,匿名函数中可以携带多个输入参数 sumAxBy=(x,y)(3*x+4*y); sumAxBy(5,7) 如果匿名函数中不包含任何的输入参数,后边的参数列表必须用空的括号表示 t=()datestr(now); 调用此函数时同样使用括号t(),否则Matlab不执行程序。,10.3.1 匿名函数说明,应用举例:, show=()disp(hello) show =

16、 ()disp(hello) show() hello show show = ()disp(hello),例如:右边的匿名函数功能为输出字符串“hello”,而如果没有添加空格,则不输出字符串。,应用举例*:,例:创建一个4次方计算函数。, f=(x)x.4 f = (x)x.4 f(5) ans = 625,10.3.2 主函数与子函数,M文件方式存储的函数包含主函数(primary function)、子函数(subfunction)和嵌套函数(nested function)等。 M文件可以包含任意多个函数,主函数是指M文件中的第一个函数。 保存时所用的函数文件名与主函数定义名相同 MATLAB中所有非匿名函数都需要在M文件中定义 子函数是除了主函数之外的函数,一个M文件可以有任意多个子函数,但是只能有一个主函数。,在MATLAB命令窗口或者其他M文件中,只可以对主函数进行调用,而对于子函数的调用,只局限于其所在M文件中的主函数和并列的子函数。即主函数范围比子函数要广,主函数可以在M文件外部调用,子函数则不行。 在M文件中创建的子函数,需要单独声明,即

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号