收藏 分享(赏)

MATLAB 4-1 第3章程序设计初步.ppt

上传人:dreamzhangning 文档编号:4066639 上传时间:2018-12-06 格式:PPT 页数:85 大小:563.50KB
下载 相关 举报
MATLAB 4-1 第3章程序设计初步.ppt_第1页
第1页 / 共85页
MATLAB 4-1 第3章程序设计初步.ppt_第2页
第2页 / 共85页
MATLAB 4-1 第3章程序设计初步.ppt_第3页
第3页 / 共85页
MATLAB 4-1 第3章程序设计初步.ppt_第4页
第4页 / 共85页
MATLAB 4-1 第3章程序设计初步.ppt_第5页
第5页 / 共85页
点击查看更多>>
资源描述

1、MATLAB SDU,1,第3章 matlab的程序设计初步,MATLAB SDU,2,OUTLINE,MATLAB的m文件的创建和使用 MATLAB程序控制结构 程序设计 调试的基本方法,MATLAB SDU,3,什么是m文件,用户如想灵活应用matlab去解决实际问题,充分调用matlab的科学技术资源,就需要编辑m文件 包含matlab语言代码的文件称为m文件,其扩展名为m。 编辑m文件可使用各种文本编辑器。,MATLAB SDU,4,2. m文件m文件的语法类似于c语言,但又有其自身特点。它只是一个简单的ASCII码文本文件,执行程序时逐行解释运行程序,matlab是解释性的编程语言。

2、m文件有两类独立的m文件 称命令文件,脚本(script)可调用m文件 称函数文件 Functions,MATLAB SDU,5,表3-1脚本文件与函数文件的区别,MATLAB SDU,6,Review: matlab的工作模式,指令驱动模式 通常matlab以指令驱动模式工作,即在matlab 窗口下当用户输入单行指令时,matlab 立即处理这条指令,并显示结果,这就是matlab命令行方式。 命令行操作时,matlab窗口只允许一次执行一行上的一个或几个语句。,MATLAB SDU,7,例如: x1=0:10 x1 =0 1 2 3 4 5 6 7 8 9 10 x2=0:3:11 x2

3、 =0 3 6 9 x3=11.5:-3:0 x3 =11.5000 8.5000 5.5000 2.5000,MATLAB SDU,8,x1=0:10,x2=0:3:11,x3=11.5:-3:0 x1 =0 1 2 3 4 5 6 7 8 9 10 x2 =0 3 6 9 x3 =11.5000 8.5000 5.5000 2.5000命令行方式程序可读性差,而且不能存储,对于处理复杂问题和大量数据时是不方便的,应编写成能存储的程序文件。,MATLAB SDU,9,m文件模式 将matlab语句构成的程序存储成以m为扩展名的文件,然后再执行该程序文件,这种工作模式称为程序文件模式。 程序文

4、件不能在指令窗口下建立,因为指令窗口只允许一次执行一行上的一个或几个语句。,MATLAB SDU,10,M 文件的创建和编辑,不管是创建或编辑脚本文件还是函数文件,可以使用各种文本编辑器:例如Windows系统下的记事本,其它商业化软件UltraEdit,EditPlus等等,但是储存格式必须是 ASCII 的格式,并且必须以.m 为后缀名。通常情况下可以直接使用MATLAB中内置的M文件编辑器。,MATLAB SDU,11,2. 点击file Save Workspace As,将工作空间中的内容存入文件。*edit 用各种edit 编辑器编制m文件。edit 用matlab自带的编辑器编制

5、m文件。word 用word编辑m文件。m文件编辑器的设定m文件编辑器可自己设定,设定方法是matlab命令窗口 options 菜单下点击 Edit Preference选定m文件编辑器。,MATLAB SDU,12,m文件编辑器缺省设置是 matlab editor 还可设成:其他的Text Editor从“file” “preference” editor/debugger设置注意:所创建的m文件必须纳入matlab搜索路径后,才能在matlab命令窗口运行。,MATLAB SDU,13,matlab搜索路径的设置matlab 缺省路径是c:matlabbin . 用pathtool路径

6、浏览器设定当前目录“file” - “set path” 方法设定当前目录,MATLAB SDU,14,matlab文件的数据文件类型mat,数据文件 .matmat文件是matlab以标准二进制格式保存的数据文件,可将工作空间中有用的数据变量保存下来。mat文件的生成和调用是由函数save和load完成的。,MATLAB SDU,15,M文件结构,良好习惯建议 1. 程序尽量做到简单易懂; 2. 所有变量都用小写,并且含义清晰明了,如用year作为变量保存年份等; 3. 带有必要的注释,这样有助于他人和自己能快速知道程序执行的目的或者算法的含义,另外也可以有助于追溯记录程序的更新过程。,MA

7、TLAB SDU,16,脚本(命令)文件(Script),命令文件 简单的m文件命令文件实际上是一串指令的集合,与在命令窗口逐行执行文件中的所有指令,其结果是一样的。没有输入输出参数。 “脚本”本身反映这样一个事实:MATLAB只是按文件所写的指令执行。 M脚本(命令)文件的构成较简单,其特点是: 它只是一串按用户意图排列而成的(包括控制流向指令在内的)MATLAB指令集。 脚本文件运行后,所产生的所有变量都驻留在MATLAB基本工作空间(Base workspace)中。只要不使用clear指令加以清除,且MATLAB指令窗不关闭,这些变量将一直保存在基本工作空间中。基本工作空间随MATLA

8、B的启动而产生;只有关闭MATLAB时,该基本空间才被删除。,MATLAB SDU,17,M函数文件( Function),与脚本(命令)文件不同,函数文件(Function file)犹如一个“黑箱”。从外界只能看到传给它的输入量和送出来的计算结果,而内部运作是藏而不见的。,MATLAB SDU,18,函数文件的特点:,从形式上看,与脚本文件不同,函数文件的第一行总是以“function”引导的“函数申明行”(Function declaration line)。该行还罗列出函数与外界联系的全部“标称”输入输出宗量。但对“输入输出宗量”的标称数目并没有限制,即可以完全没有输入输出宗量,也可以

9、是任意数目。 MATLAB允许使用比“标称数目”较少的输入输出宗量,实现对函数的调用。 从运行上看,与脚本文件运行不同,每当函数文件运行,MATLAB就会专门为它开辟一个临时工作空间,称之谓函数工作空间(Function workspace)。所有中间变量都存放在函数工作空间中。当执行完文件最后一条指令或遇到return时,就结束该函数文件的运行,同时该临时函数空间及其所有的中间变量就立即被清除。 函数空间随具体M函数文件的被调用而产生,随调用结束而删除。函数空间是相对独立的、临时的。在MATLAB整个运行期间,可以产生任意多个临时函数空间。 假如在函数文件中,发生对某脚本文件的调用,那么该脚

10、本文件运行产生的所有变量都存放于该函数空间之中,而不是存放在基本空间。,MATLAB SDU,19,函数m文件的格式:function 返回变量=函数名(输入变量)注释说明语句段程序语句段 特定规则: 函数m文件第一行必须以单词function作为引导词,必须遵循如下形式:function =() m文件的文件名必须是 .m。 程序中的变量均为局部变量,不保存在工作空间中。其变量只在函数运行期间有效。,MATLAB SDU,20,M函数文件示例,function sa = circle(r,s) %CIRCLE plot a circle of radii r in the line spec

11、ified by s. % r 指定半径的数值 % s 指定线色的字符串 % sa 圆面积 % % circle(r) 利用蓝实线画半径为 r 的圆周线. % circle(r,s) 利用串 s 指定的线色画半径为 r 的圆周线. % sa=circle(r) 计算圆面积,并画半径为 r 的蓝色圆面. % sa=circle(r,s) 计算圆面积,并画半径为 r 的 s 色圆面.% 编写于2001年4月7日,修改于2002年8月27日。 if nargin2error(输入宗量太多。); end; if nargin=1s=b; end; ,MATLAB SDU,21,函数申明(定义)行 (F

12、unction declaration line):,位于函数文件的首行,以MATLAB关键字function开头,函数名以及函数的输入输出宗量都在这一行定义。,MATLAB SDU,22,H1行(The first help text line):,紧随函数申明行之后以%开头的第一注释行。按MATLAB自身文件的规则,H1行包含:大写体的函数文件名;运用关键词简要描述的函数功能。该H1行供lookfor关键词查询和help在线帮助使用。,MATLAB SDU,23,在线帮助文本(Help text)区:,H1行及其之后的连续以%开头的所有注释行构成整个在线帮助文本。它通常包括:函数输入输出宗

13、量的含义,调用格式说明。,MATLAB SDU,24,编写和修改记录:,与在线帮助文本区相隔一个空行,也以%开头,标志编写及修改该M文件的作者和日期、版本记录。它用于软件档案管理。,MATLAB SDU,25,函数体(Function body):,为清晰起见,它与前面的注释行以空行相隔。这部分内容由实现该M函数文件功能的MATLAB指令组成。它接收输入宗量,进行程序流控制,得到输出宗量。其中为阅读、理解方便,也配置适当的空行和注释。若仅从运算角度看,惟有函数申明行和函数体两部分是构成M函数文件所必不可少的。,MATLAB SDU,26,function r = rank(A,tol) %RA

14、NK Matrix rank. % RANK(A) provides an estimate of the number of linearly % independent rows or columns of a matrix A. % RANK(A,tol) is the number of singular values of A % that are larger than tol. % RANK(A) uses the default tol = max(size(A) * norm(A) * eps. % % Class support for input A: % float:

15、double, single% Copyright 1984-2004 The MathWorks, Inc. % $Revision: 5.11.4.2 $ $Date: 2004/04/10 23:30:08 $s = svd(A); if nargin=1tol = max(size(A) * eps(max(s); end r = sum(s tol);.,程序部分,MATLAB SDU,27,matlab内置函数文件matlab自定义的函数文件称内置函数文件调用内置函数的方法:使用函数名并给出相应的入口、出口参数即可。例如:sin.m函数调用格式:y=sin(2*x)实际应用中:x=

16、0:2*pi/180:2*pi;y=sin(2*x)plot(x,y),M 函数文件分两类:内置和自定义,MATLAB SDU,28,又如 sqrt(x) 求x的平方根abs(x) 求x的绝对值det(a) 求行列式的值等等。matlab拥有大量的内置数学函数,供我们在数值运算和符号运算中调用。,MATLAB SDU,29,II 函数m文件 需要输入变量,返回输出变量matlab用户可以根据需要编辑自己的m文件,它们可以像库函数一样方便的调用,从而极大地扩展了matlab 的能力。 对于某一类特殊问题,如创建了许多m函数文件,则可形成新的工具箱。 这种用matlab语言创建定义新的matlab

17、函数的功能,正体现了matlab语言强大的扩展功能。,MATLAB SDU,30,M文件命名以及调用,对于脚本文件的命名,规则和变量的命名规则一致,即必须以字母开头,其余部分可以是字母、数字和下划线的任意组合。调用脚本文件时只需要在MATLAB的主窗口输入脚本文件的名字(不带后缀),脚本文件内的内容就会得到执行。,MATLAB SDU,31,函数文件命名与调用,函数文件的命名规则除了和变量的命名规则一致以往,另外惯用的规则是函数文件名和函数名相一致。 调用方式out1,out2,outN=functionname(in1,in2inN)输出方括号,输入小括号,MATLAB SDU,32,例,利

18、用函数文件,实现直角坐标(x,y)与极坐标(,)之间的转换,函数文件tran.m:function rho,theta=tran(x,y)rho=sqrt(x*x+y*y);theta=atan(y/x);调用tran.m的命令文件main1.m:x=input(Please input x=:);y=input(Please input y=:);rho,the=tran(x,y);rhothe,MATLAB SDU,33,补充:函数的递归调用,递归调用:函数调用其本身称为函数的递归调用 例如求n!阶乘本身是用递归形式进行定义的:因此定义阶乘函数文件可以采用递归调用,MATLAB SDU,3

19、4,function f = factor(n) If n=1f=1; elsef=factor(n-1)*n; end,MATLAB SDU,35,M文件和内部伪代码,调用M文件时,matlab会对该文件进行解析,并生成相应的内部伪代码(pseudocode, pcode)存放在内存,再次调用时直接调用内存中的pcode,避免对相同M文件重复解析。可以用pcode 产生伪代码:难以阅读,保密性好,MATLAB SDU,36,局部变量和全局变量,局部(Local)变量 它存在于函数空间内部的中间变量,产生于该函数的运行过程中,其影响范围也仅限于该函数本身。 全局(Global)变量 通过glo

20、bal指令,MATLAB也允许几个不同的函数空间以及基本空间共享一个变量。这种被共享的变量称为全局变量。每个希望共享全局变量的函数或MATLAB基本工作空间,必须逐个用global对具体变量加以专门定义。没采用global定义的函数或基本空间,将无权享用全局变量。 如果某个函数的运作使全局变量的内容发生了变化,那么其他函数空间以及基本工作空间中的同名变量也就随之变化。 除非与全局变量联系的所有工作空间都被删除,否则全局变量依然存在。通常情况下会选取全部是大写字母的命名为全局变量名。全局变量的使用可以减少参数的传递,如果合理的使用可以提高程序执行效率,但是同时会损害函数的封装性,增加程序调试和维

21、护的难度,因此一般不推荐使用,MATLAB SDU,37,参数传递,在调用函数时,MATLAB用两个永久变量nargin和nargout分别记录调用该函数时的输入实参和输出实参的个数。只要在函数文件中包含这两个变量,就可以准确地知道该函数文件被调用时的输入输出参数个数,从而决定函数如何进行处理。nargin 在函数体内,用于获取实际输入宗量 nargout 在函数体内,用于获取实际输出宗量 nargin(fun) 获取fun指定函数的标称输入宗量数 nargout(fun) 获取fun指定函数的标称输出 宗量数,MATLAB SDU,38,例3-4 定义一个函数,当输入1个参数求其绝对值,输入

22、2个参数求其平方根 函数文件内容为 function c = calnar(a,b) %calnar.m: example2-4 %example2-4if (nargin = = 1)c=abs(a);elseif (nargin = = 2)c=sqrt(a.2 + b.2);end,MATLAB SDU,39,主函数和子函数,多个函数代码,第一个是主函数,其它是子函数;主函数可外部调用,子函数不行;多个子函数排列次序可改变 例:定义了一个stat函数,可以求一个向量的均值和均方差,stat.m文件内容如下: function mean,stdev = stat(x) n = length

23、(x); mean = avg(x,n); stdev = sqrt(sum(x-avg(x,n).2)/n); function mean = avg(x,n) mean = sum(x)/n;,MATLAB SDU,40,子函数的性质:,每个子函数的第一行是其自己的函数申明行。 在M函数文件内,主函数的位置不可改变,但子函数的排列次序可任意改变。 子函数只能被处于同一文件的主函数或其他子函数调用。 在M函数文件中,任何指令通过“名字”对函数进行调用时,子函数的优先级仅次于内装函数。 同一文件的主函数、子函数的工作空间都是彼此独立的。各函数间的信息,或通过输入输出宗量传递,或通过全局变量传递

24、,或通过跨空间指令传递。 help, lookfor等帮助指令都不能提供关于子函数的任何帮助信息。(需要通过主函数),MATLAB SDU,41,二、MATLAB控制流,for循环结构 while循环结构 if-else-end分支结构 switch-case结构 try-catch结构 控制程序流的其它常用指令,MATLAB SDU,42,1、for循环结构,for x=array(commands) end,MATLAB SDU,43,1、for循环结构,For循环的结构以及含义和其他高级语言的结构和含义基本一致。 一个简单的for循环示例。 和其他语言一样for循环可以有多重循环。例:利

25、用for循环求1!+2!+3!+ +5!的值,MATLAB SDU,44,例:利用for循环求1!+2!+3!+ +5!的值sum=0;for i=1:5pdr=1;for k=1:ipdr=pdr*k;endsum=sum+pdr;end,sum =153,MATLAB SDU,45,2、while循环结构,while expression(commands) end,与for循环设置固定循环次数来执行循环体相比较,MATLAB中的while循环是应用逻辑表达式来设置与判断是否执行循环体,循环次数依逻辑判断条件来决定,循环次数是不固定的。 例:Fibonacci数组的元素满足Fibonacc

26、i规则:a k+2=ak+ak+1,(k=1,2,);且a1=a2=1。现要求该数组中第一个大于10000的元素。,MATLAB SDU,46,MATLAB SDU,47,a(1)=1;a(2)=1;i=2; while a(i)=10000a(i+1)=a(i-1)+a(i); %当现有的元素仍小于10000时,求解下一个元素。i=i+1; end; i,a(i),MATLAB SDU,48,Break/continue语句,break语句用来退出for循环和while循环。注意:break用与终止for循环或者while循环结构,当在循环结构内执行该命令时,程序将跳出循环结构,执行循环结构

27、外面的下一条语句。当为嵌套循环结构时,break只是跳出当前的循环结构 。 continue语句是控制的当前的一个循环,当在循环结构内执行continue命令后,程序将跳过此次循环剩下的那些执行语句,而继续执行下一次循环。 在实际应用中,break和continue命令常跟if条件结构相结合 例:用for循环指令来寻求Fibonacc数组中第一个大于10000的元素。,MATLAB SDU,49,clear n=100; a=ones(1,n); for i=3:na(i)=a(i-1)+a(i-2);if a(i)10000a(i),break; %跳出所在的一级循环。end; end, i

28、,MATLAB SDU,50,3、if-else-end分支结构,if-else-end指令为程序流提供了一种分支结构,它最常用的使用方式:,MATLAB SDU,51,执行过程,MATLAB SDU,52,注意,在if条件结构中,elseif语句组部分可以没有(0个),也可以是多个(m个),但是else语句组部分最多是一个。 if-end的一一配对:也就是说有一个if引导的条件,必然需要一个end来对应。,MATLAB SDU,53,例,一个简单的分支结构 两个分支结构 多分支结构,MATLAB SDU,54,%一个简单的分支结构 clear cost=10; number=input(nu

29、mber =); if number8sums=number*0.95*cost; end, sums%两个分支结构 x=input(x=); if x=10t=0:0.1*pi:2*pi;y=x*sin(t);plot(t,y) elset=0:0.1*pi:2*pi;y=x/10*cos(t);plot(t,y) end,MATLAB SDU,55,多分支结构:设某批发贸易公司从事苹果批发,当客户购买5000件以上,15元/件;25005000件,16元/件;10002500件,17元/件;5001000件,18元/件;250500件,19元/件;100250件,20元/件;50100件,

30、22元/件;1050件,24元/件;9件以下,28元/件。试编写程序根据客户购买的件数,求出总的 金额数。,MATLAB SDU,56,n=input(请输入客户拟购买苹果的件数); if n=5000sum=15*n; else if 5000n,MATLAB SDU,57,4、switch-case结构,switch excase test1(commands1)case test2(commands2) case testk(commandsk)otherwise(commands) end,MATLAB SDU,58,MATLAB SDU,59,例2-10 用switch结构编写程序,

31、实现判断键盘输入的任意一个实数是正数、负数还是零。用switch结构实现的程序内容如下: va = input(请输入数值); t=va/abs(va); switch tcase -1disp(输入为负数);case 1disp(输入为正数);otherwisedisp(输入为零);; end,MATLAB SDU,60,注意,switch后面的表达式的值既可以是数值,也可以是字符串。 每一个case子句后面可以处理多个条件,此时,多个条件要用单元数组的形式表示,当其中switch的表达式的值只需要满足单元数组的任一值都会执行相对应的语言组。,MATLAB SDU,61,例2-11 用swi

32、tch结构编写程序,实现判断键盘输入的任一110的数为偶数、奇数还是其他。 用switch结构编写程序内容如下: va = input(请输入数值); switch vacase 1,3,5,7,9disp(输入为奇数);case 2,4,6,8,10disp(输入为偶数);otherwisedisp(输入非奇非偶);; end,MATLAB SDU,62,%划分区域:满分(100),优秀(90-99),良好(80-89),及格(60-79),不及格(60)。 for i=1:10;ai=89+i;bi=79+i;ci=69+i;di=59+i;end;c=d,c; Name= Jack,Ma

33、rry,Peter, Rose, Tom; %元胞数组 Mark=72,83,56,94,100;Rank=cell(1,5); %创建一个含5个元素的构架数组S,它有三个域。 S=struct(Name,Name,Marks,Mark,Rank,Rank); %根据学生的分数,求出相应的等级。 for i=1:5switch S(i).Markscase 100 %得分为100时S(i).Rank=满分; %列为满分等级case a %得分在90和99之间S(i).Rank= 优秀; %列为优秀等级case b %得分在80和89之间S(i).Rank= 良好; %列为良好等级case c

34、%得分在60和79之间S(i).Rank= 及格; %列为及格等级otherwise %得分低于60。S(i).Rank=不及格; %列为不及格等级 end end %将学生姓名,得分,登记等信息打印出来。 disp(学生姓名 , 得分 , 等级);disp( ) for i=1:5;disp(S(i).Name,blanks(6),num2str(S(i).Marks),blanks(6),S(i).Rank); end;,MATLAB SDU,63,5、try-catch结构,错误控制指令 try(commands1) 组命令1总被执行。若正确,则跳出此结构 catch(commands2

35、) 仅当组命令1出现执行错误,组命令2才被执行 end,MATLAB SDU,64,例2-12 判断下列程序的运行结果。 程序内容如下: a = 1 2; 3 4; 5 6; b = 7 8; 9 10; trya*2a.*ba*b catchdisp(发生错误) end lasterr,MATLAB SDU,65,%try-catch结构应用实例 clear, N=4; A=magic(3); %设置3行3列矩阵A。 tryA_N=A(N,:), 取A的第N行元素 catchA_end=A(end,:), %如果取A(N,:)出错,则改取A的最后一行。 end lasterr %显示出错原因

36、,MATLAB SDU,66,echo命令,通常运行一个M文件时,文件中的命令不在屏幕上显示出来。 如果M文件被执行之前,首先在MATLAB命令窗中输入echo命令并予以执行,然后再运行M文件,则M文件中的程序将在MATLAB命令窗中显示出来,但影响程序的执行速度。 若要清除echo命令的影响,在MATLAB命令窗中键入“echo off”并回车即可。,MATLAB SDU,67,Input( )语句,Input( )语句用在M文件中,执行到input( )命令时,MATLAB暂停程序的执行,等待用户用键盘赋值给input( )指定的变量。 Input( )语句还可用于等待用户输入MATLAB

37、表达式和字符串,跟其他语句配合,可以实现“菜单”的功能。不过MATLAB中有专用的菜单设置命令,一般并不使用input( )来建立。,MATLAB SDU,68,keyboard命令,类似于input( )但功能更强的keyboard命令是等待键盘输入内容,并把键盘输入的内容作为一个M文件来调用。 例如,建立一个M文件us.m: x=0:0.01*pi:2*pi; keyboard 执行us.m,计算机返回一个提示符:k 此时,可以输入一个函数,但要注意这个函数自变量和因变量的对应关系。 return命令返回正常状态,表示增加输入的文本内容输入完毕,这一条命令是必须的。,MATLAB SDU,

38、69,6、控制程序流的其它常用指令(1),MATLAB SDU,70,控制程序流的其它常用指令(2),MATLAB SDU,71,四、程序调试与优化,程序调试概述 一般调试技巧 程序调试器的使用 程序设计的优化,MATLAB SDU,72,程序调试概述,MATLAB的调试器(Debugger)可以迅速地帮您找出程序错误所在,其功能包含: 查询每一个函数的工作空间(Workspace). 显示函数调用的堆栈(Function Call Stack). 一行一行地执行M文件.,MATLAB SDU,73,一般调试技巧,一般而言,计算机程序可能发生的错误可分为两种: 语法错误(Syntax Erro

39、rs) 逻辑错误(Logic Errors) 一般检测逻辑错误的方法: 删除表达式最尾端的分号。 若调试一个单独函数,可在其第一行的函数申明行加上%,并定义输入变量的值,直接以脚本的方式来执行此M文件,并保留所有变量于MATLAB工作空间中,以便后续查看及调试。 在程序中加入keyboard命令,可使程序执行至此处即暂停,并显示“k”的提示号。此时可任意查看或改变工作空间的任何变量。若要继续执行程序,可在命令窗输入“return”并按下Enter键。 使用MATLAB程序调试器。,MATLAB SDU,74,程序调试器的使用,M文本编辑器事实上就是调试器,包含了一系列的调试图标。 更多的调试选

40、项,则出现在工具栏的debug下拉式菜单中。 调试器调试程序的一般步骤:,MATLAB SDU,75,Step:单步运行命令,每单击一次,程序运行一次;但不进入函数。 Step In:单步运行命令,遇到函数进入函数体,单击一次运行一步。 Step Out:停止单步运行,如果在函数中,跳出函数;如果不在函数,跳到下一个断点处。 Run:运行,如果碰到断点会停在断点,变为“Continue”,如果程序改变没保存,命令变为“Save and Run”。 Go Until Cursor:直接运行到光标所在位置。,MATLAB SDU,76,Set/Clear Breakpoint:设置或者清除断点。

41、Set/Modify Conditional Breakpoint:设置或者修改条件断点,条件断点的设定可以使得程序在执行到设定的条件时停止,如果选择这个命令,会弹出如图3-10所示的条件断点设置或修改对话框 Enable/Disable Breakpoint:使断点有效或者消除断点。 Clear Breakpoints in All Files:清除所有的断点 Stop If Errors/Warnings:在程序执行出现错误或者警告的时候,停止程序运行,进入程序调试。,MATLAB SDU,77,程序调试举例,举例 教材例313 断点的设置和变量空间的检查,MATLAB SDU,78,MA

42、TLAB SDU,79,假设最初写出的程序内容如下: x = input(请输入x变量的数值); y = input(请输入y变量的数值); if x = 0 end fv,MATLAB SDU,80,MATLAB SDU,81,程序的优化,代码的计时的意义:促进代码的优化 代码计时的方法1. tic toc计时方法2. etime(t1,t2)计时方法 (用clock计时)3. 用cuptime计时方法,MATLAB SDU,82,程序的优化举例,程序代码的向量化和对矩阵的熟悉:充分利用Matlab矩阵处理的优势例: 求1+1/2+1/3+1/1000000程序求和矩阵运算求和,MATLAB SDU,83,程序代码,矩阵的预先配置(内存的预先分配)例:a=1,2,3; 4,5,6;7,8,9;% option y=zeros(1:100)for i=1,100y(i)=det(ai)end,MATLAB SDU,84,小 结,本节主要介绍了matlab语言程序设计基础 掌握2类M文件,掌握M函数的创建和引用,掌握MATLAB控制流通过学习,应能编写简单程序,学会程序的调试,MATLAB SDU,85,思考题,2 产生20个随机的二位随机整数,输出其中小于平均值的偶数,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 实用文档 > 说明文书

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报