MATLAB编程基础

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

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

1、第四章 MATLAB编程基础 第四章 MATLAB编程基础 4.1 概述 4.2 流程控制 4.3 脚本文件 4.4 函数文件 4.5 M文件调试 4.6 M文件性能分析 4.7 本章小结 第四章 MATLAB编程基础 4.1 概 述 MATLAB提供了完整的编写应用程序的能力,这种能力通过一种被称为M语言的高级语言来实现。这种编程语言是一种解释性语言,利用该语言编写的代码仅能被MATLAB接受,被MATLAB解释、执行。其实,一个M语言文件就是由若干MATLAB的命令组合在一起构成的,这些命令都是在前面章节中介绍的合法的MATLAB命令。和C语言类似,M语言文件都是标准的纯文本格式的文件,其

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

3、用高级语言开发的函数文件,这里的函数文件既包括用C语言 开发的MEX函数文件,又包含了M函数文件。有关MEX函数文 件的内容已经超出了本书的内容,将在MATLAB外部编程接 口一书中详细讲述。 第四章 MATLAB编程基础 如前所述,MATLAB的M语言文件是纯文本格式的文件,利用任何一种纯文本编辑器都可以编写相应的文件,例如 Windows平台下的记事本、UltraEdit等软件,或者Unix平台下 的Emacs软件等。同样,为了方便编辑M文件,MATLAB也提 供了一个编辑器,叫作meditor,它也是系统默认的M文件编辑器。运行meditor的方法非常简单,在MATLAB命令行窗口中键

4、入下面的指令就可以打开meditor: edit这时MATLAB将启动meditor,然后创建一个未命名的空白 文件,如图4-1所示。 第四章 MATLAB编程基础 图4-1 meditor的运行界面 第四章 MATLAB编程基础 这时用户就可以直接在编辑器中键入MATLAB指令,开发M语言文件了。此外,运行meditor还可以通过“File”菜单中“New”子菜单下的“M-File”命令来实现,或者直接单击MATLAB用户界面工具栏上的新建按钮完成同样的工作。M语言文件可以分为两类,其中一类是脚本文件,另外一类叫作函数文件。本章将分别介绍这两类文件的编写方法。 第四章 MATLAB编程基础

5、4.2 流 程 控 制 4.2.1 选择结构如前所述,当人们判断某一条件是否满足,根据判断的结果来选择不同的解决问题的方法时,就需要使用选择结构。和C语言类似,MATLAB的条件判断可以使用if语句或者switch 语句。 第四章 MATLAB编程基础 4.2.1.1 if语句if语句的基本语法结构有三种,分别如下:(1) if (关系运算表达式)MATLAB语句end这种形式的选择结构表示,当关系运算表达式计算的结果为逻辑真的时候,执行MATLAB语句,这里的MATLAB语句可以是一个MATLAB表达式,也可以是多个MATLAB表达式。在MATLAB语句的结尾处,必须有关键字end。 第四章

6、 MATLAB编程基础 (2) if(关系运算表达式)MATLAB语句AelseMATLAB语句Bend这种选择结构表示,当关系运算表达式的计算结果为逻辑真的时候,执行MATLAB语句A,否则执行MATLAB语句B,在语句B的结尾必须具有关键字end。 第四章 MATLAB编程基础 (3) if (关系运算表达式a)MATLAB语句Aelseif (关系运算表达式b)MATLAB语句Belse (关系运算表达式c)end这种选择结构可以判断多条关系运算表达式的计算结果,然后按照执行的逻辑关系执行相应的语句。读者可以根据类似 的C语言知识或者前面两种选择结构的介绍判断这种结构的执行方式。 第四章

7、 MATLAB编程基础 例子4-1 if语句的使用if_examp.m。读者通过本例子将同时了解meditor的基本使用方法。打开 meditor,然后键入下面的指令:001clear all002003I=1;004J=2;005006if I = J007A(I,J) = 2;008elseif abs(I-J) = 1009A(I,J) = ?1;010else011A(I,J) = 0;012end 第四章 MATLAB编程基础 注意:在键入程序时,不要将行号(001012)也敲进去,在这里设置行号的主要目的是为了便于讲解和分析程序。所有的指令键入完毕后,将文件保存,读者可以将其保存为

8、任何名字,不过文件名必须由英文字符和数字组成,将文件 的扩展名设置为.m,并且将文件保存在MATLAB的搜索路径下,例如MATLAB当前的工作路径。然后在MATLAB的命令行中,键入刚才保存的文件名,不过,这时不要将扩展名也一同键入,MATLAB就会依次执行这些指令。 第四章 MATLAB编程基础 运行例子4-1的方法和效果如下: if_exampA =0 -1例子4-1代码的核心是006012行的部分,这部分展示了if-elseif-else-end语句组合的使用方法。请读者仔细察看,并且通过修改程序003和004行中对I和J的赋值来察看整个语句的执行情况。和C语言类似,if-elseif-

9、else的语句结构也可以嵌套地使用,也就是可以存在这样的语句结构: 第四章 MATLAB编程基础 if(关系表达式a)if(关系表达式b) MATLAB语句Aelse MATLAB语句Bendelseif(关系表达式c) MATLAB语句Celse MATLAB语句Dendend 第四章 MATLAB编程基础 注意:在使用嵌套的选择结构时,需要小心if语句和end关键字的配对。例子4-2 嵌套使用的if结构if_examp2.m。001clear all002003if 1004 disp(Is 1)005else006 disp(Not 1)007end008 第四章 MATLAB编程基础

10、009I = 1;010if I011 if I -2016 dis(I is less than 0 but bigger than -2)017 end018end 第四章 MATLAB编程基础 该程序的运行方法和效果如下: if_examp2Is 1I is bigger than 0 but less than 2在例子4-2中,主要说明了嵌套的if结构和在关系表达式中使用常量的方法。在代码的003行,if语句的关系表达式为常数1,这个时候if语句将始终认为非零值为逻辑真,所以,程序执行了004行的代码。同样,在程序的009行,if语句的关系表达式为变量I,若I的数值为非零值,则if语

11、句判断其为逻辑真,所以,代码的016行只有在I为0时,才可能被执行。 第四章 MATLAB编程基础 4.2.1.2 switch语句另外一种构成选择结构的关键字就是switch。在处理实际问题的时候,往往要处理多个分支,这时如果使用if-else语句处理多分支结构往往使程序变得十分冗长,从而降低了程序的可读性。switch语句就可以用于处理这种多分支的选择,它的基本语法结构如下:第四章 MATLAB编程基础 switch(表达式)case 常量表达式a:MATLAB语句Acase 常量表达式b:MATLAB语句Bcase 常量表达式m:MATLAB语句Motherwise :MATLAB语句N

12、end 第四章 MATLAB编程基础 在switch语句之后的表达式可以是一个数值类型表达式或者是一个数值类型的变量,当这个表达式的值同case后面的某一个常量表达式相等时,则执行该case后面的常量表达式后面的语句。注意:MATLAB的switch和C语言的switch语句结构不同。在C语言中,每一个case后面的语句中必须包含类似break语句的流程控制语句,否则程序会依次执行符合条件的case语句后面的每一个case分支。但是在MATLAB中就不必如此,程序仅仅执行符合条件的case分支。 第四章 MATLAB编程基础 例子4-3 switch结构使用示例switch_examp.m。0

13、01clear all002003algorithm = input(Enter an algorithm in quotes (ode23, ode15s, etc:) );004005switch algorithm006case ode23007str = 2nd/3rd order;008case ode15s, ode23s009 str = stiff system; 010otherwise011str = other algorithm;012end013disp(str); 第四章 MATLAB编程基础 该文件的运行方法和效果如下: switch_exampEnter an

14、algorithm in quotes (ode23, ode15s, etc:) ode232nd/3rd order switch_exampEnter an algorithm in quotes (ode23, ode15s, etc:) ode4other algorithm 第四章 MATLAB编程基础 例子4-3中需要用户在执行程序的过程中输入一个字符串,switch语句根据用户的输入判断执行相应的case分支。若没有符合条件的case分支,则switch执行otherwise后面的语句。若switch结构中没有定义otherwise及其相应的代码,则程序不会进行任何操作,而是直

15、接退出switch结构。提示:在处理以字符串变量或者常量参与的关系判断操作时,使用switch结构要比if-else结构效率高一些。由于MATLAB的switch结构没有C语言的fall-through特性,所以,如果需要针对多个条件而使用同一个case分支的时候,需要使用元胞数组与之配合,参见例子4-4。 第四章 MATLAB编程基础 例子4-4 switch结构使用示例switch_examp2.m。 001clear all 002 003var = 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-4运行的方法和效果如下: switch_examp2Input a Numer:11 switch_examp2Input a Numer:32 or 3 or 4 switch_examp2Input a Numer:7something else 第四章 MATLAB编程基础 例子4-4代码的核心部分为007行,这里使用元胞数组增加判断条件的

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

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

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