第四章-MATLAB编程基础-MATLAB基础与编程入门-教学课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第四章-MATLAB编程基础-MATLAB基础与编程入门-教学课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第四 MATLAB 编程 基础 入门 教学 课件
- 资源描述:
-
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
2、命令。和C语言类似,M语言文件都是标准的纯文本格式的文件,其文件的扩展名为.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的方法非常简单,在M
4、ATLAB命令行窗口中键入下面的指令就可以打开meditor:edit 这时MATLAB将启动meditor,然后创建一个未命名的空白文件,如图4-1所示。第四章 MATLAB编程基础 图4-1 meditor的运行界面 第四章 MATLAB编程基础 这时用户就可以直接在编辑器中键入MATLAB指令,开发M语言文件了。此外,运行meditor还可以通过“File”菜单中“New”子菜单下的“M-File”命令来实现,或者直接单击MATLAB用户界面工具栏上的新建按钮完成同样的工作。M语言文件可以分为两类,其中一类是脚本文件,另外一类叫作函数文件。本章将分别介绍这两类文件的编写方法。第四章 MA
5、TLAB编程基础 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语句的
6、结尾处,必须有关键字end。第四章 MATLAB编程基础(2)if(关系运算表达式)MATLAB语句A elseMATLAB语句B end 这种选择结构表示,当关系运算表达式的计算结果为逻辑真的时候,执行MATLAB语句A,否则执行MATLAB语句B,在语句B的结尾必须具有关键字end。第四章 MATLAB编程基础(3)if(关系运算表达式a)MATLAB语句A elseif(关系运算表达式b)MATLAB语句B else(关系运算表达式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语句Ne
12、nd 第四章 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 algorithm in quot
14、es(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及其相应的代码,则程序不会进行任何操作,而是直接退出switch结构。提示:在处理以字符串变量或
15、者常量参与的关系判断操作时,使用switch结构要比if-else结构效率高一些。由于MATLAB的switch结构没有C语言的fall-through特性,所以,如果需要针对多个条件而使用同一个case分支的时候,需要使用元胞数组与之配合,参见例子4-4。第四章 MATLAB编程基础 例子4-4 switch结构使用示例switch_examp2.m。001clear all002003var=input(Input a Numer:);004switch var005 case 1006 disp(1)007 case 2,3,4008 disp(2 or 3 or 4)009 case
16、5010 disp(5)011 otherwise012 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行,这里使用元胞数组增加判断条件的个数,当输入的数字为2、3或者4时,switch结构将使用同一个case分支进行判断、计算。注意:从代码
17、的完整性和可靠性角度出发,在使用switch语句时,一定要包含otherwise分支,这是一种良好的编程习惯。第四章 MATLAB编程基础 4.2.2 循环结构循环结构 在解决很多问题的时候需要使用循环结构,例如求解数列的和或者进行某种迭代法求解数值方程时,都需要循环结构配合完成计算。在MATLAB中,包含两种循环结构,一种是循环次数不确定的while循环,而另一种是循环次数确定的for循环。第四章 MATLAB编程基础 1while循环结构循环结构while语句可以用来实现“当”型的循环结构,它的一般形式如下:while(表达式)MATLAB语句end 当表达式为真时,循环将执行由语句构成的
18、循环体,其特点是先判断循环条件,如果循环条件成立,即表达式运算结果为“真”,再执行循环体。循环体执行的语句可以是一句也可以是多句,在MATLAB语句之后必须使用关键字end作为整个循环结构的结束。另外,在循环过程中一定要能够改变关系表达式或者布尔类型变量的值,或者使用其他方法来跳出循环,否则会陷入死循环(无法正常退出的循环叫作死循环)。第四章 MATLAB编程基础 例子例子4-5 使用while语句求解。001i=1;002sum=0;003while(i while_example 计算结果为:500500 例子4-5的002006行使用了while循环结构,在循环结构中进行了累加的操作。需
19、要注意的是,在MATLAB中没有类似C语言的+或者+=等运算操作符,因此在进行诸如累加或者递减的运算时,不得不给出完整的表达式。另外,例子4-5求数列和的算法的运算效率很低,在MATLAB中不要使用这样的结构完成类似的运算,而需要采用向量化的计算。第四章 MATLAB编程基础 注意:while循环结构的关系表达式可以是某个数据变量或者常量,这时,将按照非零值为逻辑真进行相应的操作。另外,在进行上述操作时,若数据变量为空矩阵,则while语句将空矩阵作为逻辑假处理,也就是说,在while A MATLAB语句S1 end结构中,若A为空矩阵,则MATLAB语句S1永远不会被执行。第四章 MATL
20、AB编程基础 2for循环结构循环结构 使用for语句构成循环是最灵活、简便的方法,不过,使用for语句循环需要预先知道循环体执行的次数,所以这种循环一般叫作确定循环。在MATLAB中for循环的基本结构如下:for index=start:increment:endMATLAB语句end其中,index的取值取决于start和end的值,一般地,这里通常使用等差的数列向量,参见例子4-6。第四章 MATLAB编程基础 例子例子4-6 使用for语句求解 。001sum=0;002for i=1:1000003 sum=sum+i;004end005str=计算结果为:,num2str(sum
21、);006disp(str)10001nn第四章 MATLAB编程基础 例子4-6运行的结果为 for_example计算结果为:500500 在例子4-6中,002行的代码使用了确定次数的for循环结构,循环次数使用行向量进行控制,而且索引值i按照默认的数值1进行递增。在for循环语句中,不仅可以使用行向量进行循环迭代的处理,也可以使用矩阵作为循环次数的控制变量,这时循环的索引值将直接使用矩阵的每一列,循环的次数为矩阵的列数,参见例子4-7。第四章 MATLAB编程基础 例子例子4-7 for循环示例。001A=rand(3,4);002003for i=A004 sum=mean(i)00
22、5end例子4-7运行的结果为 for_matricessum=0.2728sum=0.6649sum=0.4275sum=0.5220 第四章 MATLAB编程基础 例子4-7尽管只有短短的几行,但是在003行使用了一个矩阵作为循环的索引值,于是,循环结果就分别计算矩阵的每一列元素的均值。和其他高级语言类似,MATLAB的循环结构也可以进行嵌套使用,使用嵌套的循环需要注意for关键字和end关键字之间的配对使用,请读者根据高级语言的一般特性来推断其运行的方式,这里就不再赘述了。第四章 MATLAB编程基础 4.2.3 break语句和语句和continue语句语句 在循环结构中还有两条语句会
23、影响程序的流程,这就是break语句和continue语句,这两条语句的基本功能如下:当break语句使用在循环体中的时候,其作用是能够在执行循环体的时候强迫终止循环,即控制程序的流程,使其提前退出循环,它的使用方法是break;continue语句出现在循环体中的时候,其作用是能够中断本次的循环体运行,将程序的流程跳转到判断循环条件的语句处,继续下一次的循环,它的使用方法是continue;第四章 MATLAB编程基础 例子例子4-8 break语句示例break_example.m。001i=0;002j=0;003k=0;004for i=1:2005 for j=1:2006 for
24、k=1:2007 if(k=2)008 disp(退出循环);009 break;010 end 第四章 MATLAB编程基础 011 str=sprintf(I=%d,J=%d,K=%d,i,j,k);012 disp(str);013 end014 end015end016disp(程序运行结束);第四章 MATLAB编程基础 例子例子4-8 的运行结果如下:break_exampleI=1,J=1,K=1退出循环I=1,J=2,K=1退出循环I=2,J=1,K=1退出循环I=2,J=2,K=1退出循环程序运行结束 第四章 MATLAB编程基础 break语句的作用是退出当前的循环结构运行
25、,所以在例子4-8中,位于最内层循环的break语句执行的结果是退出了最内层的循环k,位于外层的循环i和j还是都运行完毕了。第四章 MATLAB编程基础 例子例子4-9 continue语句示例。001i=0;002for i=1:6003 if(i3)004 continue005 else006 str=sprintf(I=%d,i);007 disp(str);008 end009end010str=sprintf(循环结束 I=%d,i);011disp(str);第四章 MATLAB编程基础 例子4-9的运行结果如下:continue_exampleI=1I=2I=3循环结束 I=6
展开阅读全文