MATLAB编程基础

上传人:jiups****uk12 文档编号:45557134 上传时间:2018-06-17 格式:PPT 页数:129 大小:847.50KB
返回 下载 相关 举报
MATLAB编程基础_第1页
第1页 / 共129页
MATLAB编程基础_第2页
第2页 / 共129页
MATLAB编程基础_第3页
第3页 / 共129页
MATLAB编程基础_第4页
第4页 / 共129页
MATLAB编程基础_第5页
第5页 / 共129页
点击查看更多>>
资源描述

《MATLAB编程基础》由会员分享,可在线阅读,更多相关《MATLAB编程基础(129页珍藏版)》请在金锄头文库上搜索。

1、MATLAB编程基础 MATLAB编程基础 概述 流程控制 脚本文件 函数文件 M文件调试 MATLAB编程基础 概 述 MATLAB提供了完整的编写应用程序的能力,这种能力通过一种被称为M语言的高级语言来实现。这种编程语言是一种解释性语言,利用该语言编写的代码仅能被MATLAB接受,被MATLAB解释、执行。其实,一个M语言文件就是由若干MATLAB的命令组合在一起构成的,这些命令都是在前面章节中介绍的合法的MATLAB命令。和C语言类似,M语言文件都是标准的纯文本格式的文件,其文件的扩展名为.m。 MATLAB编程基础 使用M文件最直接的好处就是可以将一组MATLAB命令组 合起来,通过一

2、个简单的指令就可以执行这些命令。这些命令 可以完成某些MATLAB的操作,也可以实现某个具体的算法。 其实,MATLAB产品族中包含的工具箱就是由世界上在相应专 业领域内的顶尖高手,利用M语言开发的算法函数文件集合。 读者也可以结合自己工作的需要,为自己的MATLAB开发具体 的算法和工具箱。MATLAB的函数主要有两类,一类被称为内建(Build-in)函 数,这类函数是由MATLAB的内核提供的,能够完成基本的运 算,例如三角函数、矩阵运算的函数等。另外一类函数就是利 用高级语言开发的函数文件,这里的函数文件既包括用C语言 开发的MEX函数文件,又包含了M函数文件。MATLAB编程基础 如

3、前所述,MATLAB的M语言文件是纯文本格式的文件,利用任何一种纯文本编辑器都可以编写相应的文件,例如 Windows平台下的记事本、UltraEdit等软件,或者Unix平台下 的Emacs软件等。同样,为了方便编辑M文件,MATLAB也提 供了一个编辑器,叫作meditor,它也是系统默认的M文件编辑器。运行meditor的方法非常简单,在MATLAB命令行窗口中键 入下面的指令就可以打开meditor: edit这时MATLAB将启动meditor,然后创建一个未命名的空白 文件,如图1所示。 MATLAB编程基础 图1 meditor的运行界面 MATLAB编程基础 这时用户就可以直接

4、在编辑器中键入MATLAB指令,开发M语言文件了。此外,运行meditor还可以通过“File”菜单中“New”子菜单下的“M-File”命令来实现,或者直接单击MATLAB用户界面工具栏上的新建按钮完成同样的工作。M语言文件可以分为两类,其中一类是脚本文件,另外一类叫作函数文件。本章将分别介绍这两类文件的编写方法。 MATLAB编程基础 流 程 控 制 1 选择结构如前所述,当人们判断某一条件是否满足,根据判断的结果来选择不同的解决问题的方法时,就需要使用选择结构。和C语言类似,MATLAB的条件判断可以使用if语句或者switch 语句。 MATLAB编程基础 1.1 if语句if语句的基

5、本语法结构有三种,分别如下:(1) if (关系运算表达式)MATLAB语句end这种形式的选择结构表示,当关系运算表达式计算的结果为逻辑真的时候,执行MATLAB语句,这里的MATLAB语句可以是一个MATLAB表达式,也可以是多个MATLAB表达式。在MATLAB语句的结尾处,必须有关键字end。 MATLAB编程基础 (2) if(关系运算表达式)MATLAB语句AelseMATLAB语句Bend这种选择结构表示,当关系运算表达式的计算结果为逻辑真的时候,执行MATLAB语句A,否则执行MATLAB语句B,在语句B的结尾必须具有关键字end。 MATLAB编程基础 (3) if (关系运

6、算表达式a)MATLAB语句Aelseif (关系运算表达式b)MATLAB语句Belse (关系运算表达式c)end这种选择结构可以判断多条关系运算表达式的计算结果,然后按照执行的逻辑关系执行相应的语句。根据类似的C语言知识或者前面两种选择结构的介绍判断这种结构的执行方式。 MATLAB编程基础 if(关系表达式a)if(关系表达式b) MATLAB语句Aelse MATLAB语句Bendelseif(关系表达式c) MATLAB语句Celse MATLAB语句Dendend 和C语言类似,if-elseif-else的语句结构也可以嵌套地使用,也就是可以存在这样的语句结构: 注意: 在使用

7、嵌 套的选择 结构时, 需要小心 if语句和 end关键 字的配对 。MATLAB编程基础 1.2 switch语句另外一种构成选择结构的关键字就是switch。在处理实际问题的时候,往往要处理多个分支,这时如果使用if-else语句处理多分支结构往往使程序变得十分冗长,从而降低了程序的可读性。switch语句就可以用于处理这种多分支的选择,它的基本语法结构如下:MATLAB编程基础 switch(表达式)case 常量表达式a:MATLAB语句Acase 常量表达式b:MATLAB语句Bcase 常量表达式m:MATLAB语句Motherwise :MATLAB语句Nend MATLAB编程

8、基础 在switch语句之后的表达式可以是一个数值类型表达式或者是一个数值类型的变量,当这个表达式的值同case后面的某一个常量表达式相等时,则执行该case后面的常量表达式后面的语句。注意:MATLAB的switch和C语言的switch语句结构不同。在C语言中,每一个case后面的语句中必须包含类似break语句的流程控制语句,否则程序会依次执行符合条件的case语句后面的每一个case分支。但是在MATLAB中就不必如此,程序仅仅执行符合条件的case分支。 MATLAB编程基础 补充例题3中需要用户在执行程序的过程中输入一个字符串,switch语句根据用户的输入判断执行相应的case分

9、支。若没有符合条件的case分支,则switch执行otherwise后面的语句。若switch结构中没有定义otherwise及其相应的代码,则程序不会进行任何操作,而是直接退出switch结构。提示:在处理以字符串变量或者常量参与的关系判断操作时,使用switch结构要比if-else结构效率高一些。由于MATLAB的switch结构没有C语言的fall-through特性,所以,如果需要针对多个条件而使用同一个case分支的时候,需要使用元胞数组与之配合。 MATLAB编程基础 例子 4switch结构使用示例switch_examp2.m。 001clear all 002 003va

10、r = input(Input a Numer:); 004switch var 005 case 1 006 disp(1) 007 case 2,3,4 008 disp(2 or 3 or 4) 009 case 5 010 disp(5) 011 otherwise 012 disp(something else) 013end MATLAB编程基础 例子4运行的方法和效果如下: switch_examp2Input a Numer:11 switch_examp2Input a Numer:32 or 3 or 4 switch_examp2Input a Numer:7someth

11、ing else MATLAB编程基础 例子4代码的核心部分为007行,这里使用元胞数组增加判断条件的个数,当输入的数字为2、3或者4时,switch结构将使用同一个case分支进行判断、计算。注意:从代码的完整性和可靠性角度出发,在使用switch语句时,一定要包含otherwise分支,这是一种良好的编程习惯。 MATLAB编程基础 2 循环结构在解决很多问题的时候需要使用循环结构,例如求解数列的和或者进行某种迭代法求解数值方程时,都需要循环结构配合完成计算。在MATLAB中,包含两种循环结构,一种是循环次数不确定的while循环,而另一种是循环次数确定的for循环。 MATLAB编程基础

12、 1while循环结构while语句可以用来实现“当”型的循环结构,它的一般形式如下 :while(表达式)MATLAB语句end当表达式为真时,循环将执行由语句构成的循环体,其特 点是先判断循环条件,如果循环条件成立,即表达式运算结果 为“真”,再执行循环体。循环体执行的语句可以是一句也可以 是多句,在MATLAB语句之后必须使用关键字end作为整个循 环结构的结束。另外,在循环过程中一定要能够改变关系表达 式或者布尔类型变量的值,或者使用其他方法来跳出循环,否 则会陷入死循环(无法正常退出的循环叫作死循环)。 MATLAB编程基础 例子5 使用while语句求解。001i = 1;002s

13、um = 0;003while ( i while_example计算结果为:500500例子5的使用了while循环结构,在循环结构中进行了累加的操作。需要注意的是,在MATLAB中没有类似C语言的+或者+=等运算操作符,因此在进行诸如累加或者递减的运算时,不得不给出完整的表达式。另外,例子5求数列和的算法的运算效率很低,在MATLAB中不要使用这样的结构完成类似的运算,而需要采用向量化的计算。 MATLAB编程基础 注意:while循环结构的关系表达式可以是某个数据变量或者常量,这时,将按照非零值为逻辑真进行相应的操作。另外,在进行上述操作时,若数据变量为空矩阵,则while语句将空矩阵作

14、为逻辑假处理,也就是说,在while A MATLAB语句S1 end结构中,若A为空矩阵,则MATLAB语句S1永远不会被执行。 MATLAB编程基础 2for循环结构使用for语句构成循环是最灵活、简便的方法,不过,使用for语句循环需要预先知道循环体执行的次数,所以这种循环一般叫作确定循环。在MATLAB中for循环的基本结构如下:for index = start:increment:endMATLAB语句end其中,index的取值取决于start和end的值,一般地,这里通常使用等差的数列向量,参见例子6。 MATLAB编程基础 例子6 使用for语句求解 。001sum = 0;

15、002for i = 1:1000003 sum = sum+i;004end005str = 计算结果为:,num2str(sum);006disp(str) MATLAB编程基础 例子6运行的结果为 for_example计算结果为:500500在例子6中,使用了确定次数的for循环结构,循环次数使用行向量进行控制,而且索引值i按照默认的数值1进行递增。在for循环语句中,不仅可以使用行向量进行循环迭代的处理,也可以使用矩阵作为循环次数的控制变量,这时循环的索引值将直接使用矩阵的每一列,循环的次数为矩阵的列数,参 见例子7。 MATLAB编程基础 例子7 for循环示例。 001A = r

16、and(3,4); 002 003for i = A 004 sum = mean(i) 005end 例子7运行的结果为 for_matrices sum =0.2728 sum =0.6649 sum =0.4275 sum =0.5220 MATLAB编程基础 例子7尽管只有短短的几行,但是使用了一个矩阵作为循环的索引值,于是,循环结果就分别计算矩阵的每一列元素的均值。和其他高级语言类似,MATLAB的循环结构也可以进行嵌套使用,使用嵌套的循环需要注意for关键字和end关键字之间的配对使用,根据高级语言的一般特性来推断其运行的方式。 MATLAB编程基础 3 break语句和continue语句在循环结构中还有两条语句会影响程序的流程,这就是 break语句和continue语句,这两条语句的基本功能如下: 当break语句使用在循环体中

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

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