MATLAB51第4章程序设计初步课件.ppt

上传人:牧羊曲112 文档编号:3852727 上传时间:2023-03-25 格式:PPT 页数:80 大小:1,006.50KB
返回 下载 相关 举报
MATLAB51第4章程序设计初步课件.ppt_第1页
第1页 / 共80页
MATLAB51第4章程序设计初步课件.ppt_第2页
第2页 / 共80页
MATLAB51第4章程序设计初步课件.ppt_第3页
第3页 / 共80页
MATLAB51第4章程序设计初步课件.ppt_第4页
第4页 / 共80页
MATLAB51第4章程序设计初步课件.ppt_第5页
第5页 / 共80页
点击查看更多>>
资源描述

《MATLAB51第4章程序设计初步课件.ppt》由会员分享,可在线阅读,更多相关《MATLAB51第4章程序设计初步课件.ppt(80页珍藏版)》请在三一办公上搜索。

1、MATLAB SDU,1,第四章 matlab的程序设计初步,MATLAB SDU,2,m文件简介,用户如想灵活应用matlab去解决实际问题,充分调用matlab的科学技术资源,就需要编辑m文件包含matlab语言代码的文件称为m文件,其扩展名为m。编辑m文件可使用各种文本编辑器。,MATLAB SDU,3,一、matlab的工作模式,指令驱动模式 通常matlab以指令驱动模式工作,即在matlab 窗口下当用户输入单行指令时,matlab 立即处理这条指令,并显示结果,这就是matlab命令行方式。命令行操作时,matlab窗口只允许一次执行一行上的一个或几个语句。,MATLAB SDU

2、,4,例如:x1=0:10 x1=0 1 2 3 4 5 6 7 8 9 10 x2=0:3:11x2=0 3 6 9x3=11.5:-3:0 x3=11.5000 8.5000 5.5000 2.5000,MATLAB SDU,5,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 9x3=11.5000 8.5000 5.5000 2.5000命令行方式程序可读性差,而且不能存储,对于处理复杂问题和大量数据时是不方便的,应编写成能存储的程序文件。,MATLAB SDU,6,m文件模式将matlab语句构成的程序

3、存储成以m为扩展名的文件,然后再执行该程序文件,这种工作模式称为程序文件模式。程序文件不能在指令窗口下建立,因为指令窗口只允许一次执行一行上的一个或几个语句。,MATLAB SDU,7,二、m文件的创建,m文件的类型是普通的文本文件,我们可以使用系统认可的文本文件编辑器来建立m文件。如各种edit编辑器,windows的记事本和word等。具体的创建方法:在matlab命令窗 口点击file 菜单 new m-file,MATLAB SDU,8,MATLAB SDU,9,MATLAB SDU,10,2.点击file Save Workspace As,将工作空间中的内容存入文件。*edit 用

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

5、置 matlab 缺省路径是c:matlabbin.用pathtool路径浏览器设定当前目录“file”-“set path”方法设定当前目录,MATLAB SDU,13,二、matlab文件的类型,数据文件.mat mat文件是matlab以标准二进制格式保存的数据文件,可将工作空间中有用的数据变量保存下来。mat文件的生成和调用是由函数save和load完成的。,MATLAB SDU,14,2.m文件 m文件的语法类似于c语言,但又有其自身特点。它只是一个简单的ASCII码文本文件,执行程序时逐行解释运行程序,matlab是解释性的编程语言。m文件有两类 独立的m文件 称命令文件,脚本(s

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

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

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

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

10、 the line specified 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 nargin2 error(输入宗量太多。);end;if nargin=1 s=b;end;,MATLAB SDU,20,函数申明(定义)行(Function declar

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

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

13、ANK(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:double,single%Copyright 1984-2004 The MathW

14、orks,Inc.%$Revision:5.11.4.2$Date:2004/04/10 23:30:08$s=svd(A);if nargin=1 tol=max(size(A)*eps(max(s);endr=sum(s tol);.,程序部分,MATLAB SDU,26,matlab内置函数文件 matlab自定义的函数文件称内置函数文件 调用内置函数的方法:使用函数名并给出相应的入口、出口参数即可。例如:sin.m函数 调用格式:y=sin(2*x)实际应用中:x=0:2*pi/180:2*pi;y=sin(2*x)plot(x,y),M 函数文件分两类:内置和自定义,MATLAB S

15、DU,27,又如 sqrt(x)求x的平方根 abs(x)求x的绝对值 det(a)求行列式的值 等等。matlab拥有大量的内置数学函数,供我们在数值运算和符号运算中调用。,MATLAB SDU,28,II 函数m文件 需要输入变量,返回输出变量 matlab用户可以根据需要编辑自己的m文件,它们可以像库函数一样方便的调用,从而极大地扩展了matlab 的能力。对于某一类特殊问题,如创建了许多m函数文件,则可形成新的工具箱。这种用matlab语言创建定义新的matlab函数的功能,正体现了matlab语言强大的扩展功能。,MATLAB SDU,29,M函数类型,I 函数句柄,函数句柄并不是伴

16、随函数文件而自动形成的文件“属性”,是必须通过专门的定义才会生成的。为一个函数定义句柄的方法有两种:利用符号;*利用转换函数str2func。对函数句柄的内涵观察需借助专门指令Functions实现。例:为MATLAB的“内建”函数创建函数句柄,并观察其内涵。,hsin=sin;%(1)创建class(hsin)%(2)类型判别CC=functions(hsin)%(3)借助指令function观察内涵,MATLAB SDU,30,函数句柄是matlab特有的语言结构,其优点:方便地实现函数间互相调用兼容函数加载的所有方式拓宽子函数包括局部函数的使用范围提高函数调用的可靠性减少程序设计中的冗余

17、提高重复执行的效率数组、结构数组、元胞型数组结合定义数据,MATLAB SDU,31,函数句柄,根据内置函数创建函数句柄 FUNHANDLE=FUNCTION_NAME匿名函数创建函数句柄 FUNHANDLE=(ARGLIST)EXPRESSION 如果函数句柄不含任何参数,后列表必须用空括号表示,调用也必须使用空括号参阅help function_handle,MATLAB SDU,32,%本例通过sin函数及其句柄演示若干基本用法。%(1)函数句柄的创建fhandle=str2func(sin);%(2)函数句柄在sin(pi/4)“数值计算”中的情况ys=sin(pi/4)%函数直接调用

18、yfold=feval(sin,pi/4)%feval指令的“老式”调yfnew=feval(fhandle,pi/4)%feval指令的“新式”调用%(3)函数句柄在sin(pi/4)“符号计算”中的情况Alpha=sym(pi/4);%定义符号常数yss=sin(Alpha)%函数直接调用yfold=feval(sin,Alpha)%feval指令的“老式”调用ynews=feval(fhandle,Alpha)%feval指令的“新式”调用%(4)函数句柄在泛函指令中的用法:在0,2*pi间求sin函数的极小值。xold=fminbnd(sin,0,2*pi)%泛函指令的“老式”调用xn

19、ew=fminbnd(fhandle,0,2*pi)%泛函指令的“新式”调用,MATLAB SDU,33,M函数类型,II 主函数和子函数 多个函数代码,第一个是主函数,其它是子函数;主函数可外部调用,子函数不行;多个子函数排列次序可改变,MATLAB SDU,34,子函数的性质:,每个子函数的第一行是其自己的函数申明行。在M函数文件内,主函数的位置不可改变,但子函数的排列次序可任意改变。子函数只能被处于同一文件的主函数或其他子函数调用。在M函数文件中,任何指令通过“名字”对函数进行调用时,子函数的优先级仅次于内装函数。同一文件的主函数、子函数的工作空间都是彼此独立的。各函数间的信息,或通过输

20、入输出宗量传递,或通过全局变量传递,或通过跨空间指令传递。help,lookfor等帮助指令都不能提供关于子函数的任何帮助信息。(需要通过主函数)子函数的算例P119 例43。,MATLAB SDU,35,私有(用)(局部)private函数,所谓私用(局部)函数,是指位于private目录上的M文件函数。私用(局部)函数的性质:私用(局部)函数的构造与普通M函数完全相同。私用(局部)函数的只能被private目录的直接父目录上的M函数文件所调用。它不能被其他目录上的任何M函数、M脚本文件或MATLAB指令窗中的命令所调用,也不能被直接父目录上的M脚本文件调用。M文件中,任何指令通过“名字”对

21、函数进行调用时,私用(局部)函数的优先级虽低于内装函数和子函数,但高与其他任何目录上的函数。help,lookfor等指令都不能提供关于私用(局部)函数的任何帮助信息(必须通过private父目录)。,MATLAB SDU,36,嵌套函数,任一个MATLAB函数体内定义函数,称之为外部函数的嵌套函数(旧版本不支持)需用end结束相互间的调用和工作空间的访问 例子 P122-P125,MATLAB SDU,37,局部变量和全局变量,局部(Local)变量它存在于函数空间内部的中间变量,产生于该函数的运行过程中,其影响范围也仅限于该函数本身。全局(Global)变量通过global指令,MATLA

22、B也允许几个不同的函数空间以及基本空间共享一个变量。这种被共享的变量称为全局变量。每个希望共享全局变量的函数或MATLAB基本工作空间,必须逐个用global对具体变量加以专门定义。没采用global定义的函数或基本空间,将无权享用全局变量。如果某个函数的运作使全局变量的内容发生了变化,那么其他函数空间以及基本工作空间中的同名变量也就随之变化。除非与全局变量联系的所有工作空间都被删除,否则全局变量依然存在。例:p125 例4-5,MATLAB SDU,38,三、MATLAB控制流,for循环结构while循环结构 if-else-end分支结构 switch-case结构 try-catch结

23、构 控制程序流的其它常用指令,MATLAB SDU,39,1、for循环结构,for x=array(commands)end,For循环的结构以及含义和其他高级语言的结构和含义基本一致。一个简单的for循环示例。和其他语言一样for循环可以有多重循环。,MATLAB SDU,40,例:利用for循环求1!+2!+3!+5!的值 sum=0;for i=1:5 pdr=1;for k=1:i pdr=pdr*k;end sum=sum+pdr;end,sum=153,MATLAB SDU,41,2、while循环结构,while expression(commands)end,与for循环设置

24、固定循环次数来执行循环体相比较,MATLAB中的while循环是应用逻辑表达式来设置与判断是否执行循环体,循环次数依逻辑判断条件来决定,循环次数是不固定的。例:Fibonacci数组的元素满足Fibonacci规则:a k+2=ak+ak+1,(k=1,2,);且a1=a2=1。现要求该数组中第一个大于10000的元素。,MATLAB SDU,42,a(1)=1;a(2)=1;i=2;while a(i)=10000 a(i+1)=a(i-1)+a(i);%当现有的元素仍小于10000时,求解下一个元素。i=i+1;end;i,a(i),MATLAB SDU,43,3、if-else-end分

25、支结构,if-else-end指令为程序流提供了一种分支结构,它最常用的使用方式:,MATLAB SDU,44,例,一个简单的分支结构两个分支结构多分支结构,MATLAB SDU,45,%一个简单的分支结构clearcost=10;number=12;if number8 sums=number*0.95*cost;end,sums%两个分支结构x=input(x=);if x=10 t=0:0.1*pi:2*pi;y=x*sin(t);plot(t,y)else t=0:0.1*pi:2*pi;y=x/10*cos(t);plot(t,y)end,MATLAB SDU,46,多分支结构:设某

26、批发贸易公司从事苹果批发,当客户购买5000件以上,15元/件;25005000件,16元/件;10002500件,17元/件;5001000件,18元/件;250500件,19元/件;100250件,20元/件;50100件,22元/件;1050件,24元/件;9件以下,28元/件。试编写程序根据客户购买的件数,求出总的 金额数。,MATLAB SDU,47,n=input(请输入客户拟购买苹果的件数);if n=5000 sum=15*n;else if 5000n,MATLAB SDU,48,4、switch-case结构,switch ex case test1(commands1)c

27、ase test2(commands2)case testk(commandsk)otherwise(commands)end,例:学生成绩管理,用来演示switch结构的应用。,MATLAB SDU,49,%划分区域:满分(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,Marry,Peter,Rose,Tom;%元胞数组Mark=72,83,56,94,100;Rank=cell(1,5);%创建一个含5个元素的构架数组S,它有

28、三个域。S=struct(Name,Name,Marks,Mark,Rank,Rank);%根据学生的分数,求出相应的等级。for i=1:5 switch S(i).Marks case 100%得分为100时 S(i).Rank=满分;%列为满分等级 case a%得分在90和99之间 S(i).Rank=优秀;%列为优秀等级 case b%得分在80和89之间 S(i).Rank=良好;%列为良好等级 case c%得分在60和79之间 S(i).Rank=及格;%列为及格等级 otherwise%得分低于60。S(i).Rank=不及格;%列为不及格等级 endend%将学生姓名,得分

29、,登记等信息打印出来。disp(学生姓名,得分,等级);disp()for i=1:5;disp(S(i).Name,blanks(6),num2str(S(i).Marks),blanks(6),S(i).Rank);end;,MATLAB SDU,50,5、try-catch结构,错误控制指令try(commands1)组命令1总被执行。若正确,则跳出此结构catch(commands2)仅当组命令1出现执行错误,组命令2才被执行end,try-catch结构应用实例。,MATLAB SDU,51,%try-catch结构应用实例clear,N=4;A=magic(3);%设置3行3列矩阵

30、A。try A_N=A(N,:),取A的第N行元素catch A_end=A(end,:),%如果取A(N,:)出错,则改取A的最后一行。endlasterr%显示出错原因,MATLAB SDU,52,break语句,break语句用来退出for循环和while循环。注意:break只用在if判断语句和while循环判断语句中,break可以中断if和while语句的执行,退出for循环或while循环,执行循环结束标志end后面的语句。例:用for循环指令来寻求Fibonacc数组中第一个大于10000的元素。,MATLAB SDU,53,clearn=100;a=ones(1,n);for

31、 i=3:n a(i)=a(i-1)+a(i-2);if a(i)10000 a(i),break;%跳出所在的一级循环。end;end,i,MATLAB SDU,54,echo命令,通常运行一个M文件时,文件中的命令不在屏幕上显示出来。如果M文件被执行之前,首先在MATLAB命令窗中输入echo命令并予以执行,然后再运行M文件,则M文件中的程序将在MATLAB命令窗中显示出来,但影响程序的执行速度。若要清除echo命令的影响,在MATLAB命令窗中键入“echo off”并回车即可。,MATLAB SDU,55,Input()语句,Input()语句用在M文件中,执行到input()命令时,

32、MATLAB暂停程序的执行,等待用户用键盘赋值给input()指定的变量。Input()语句还可用于等待用户输入MATLAB表达式和字符串,跟其他语句配合,可以实现“菜单”的功能。不过MATLAB中有专用的菜单设置命令,一般并不使用input()来建立。,MATLAB SDU,56,keyboard命令,类似于input()但功能更强的keyboard命令是等待键盘输入内容,并把键盘输入的内容作为一个M文件来调用。例如,建立一个M文件us.m:x=0:0.01*pi:2*pi;keyboard执行us.m,计算机返回一个提示符:k此时,可以输入一个函数,但要注意这个函数自变量和因变量的对应关系

33、。return命令返回正常状态,表示增加输入的文本内容输入完毕,这一条命令是必须的。,MATLAB SDU,57,6、控制程序流的其它常用指令(1),MATLAB SDU,58,控制程序流的其它常用指令(2),MATLAB SDU,59,四、函数调用和变量传递,函数调用参数传递跨空间变量传递,MATLAB SDU,60,函数调用,函数调用的命令行调用 functionname in1 in2.inN函数调用方式 out1,out2,.,outN=functionname(in1,in2.inN)输出方括号,输入小括号,MATLAB SDU,61,M文件和内部伪代码,调用M文件时,matlab会

34、对该文件进行解析,并生成相应的内部伪代码(pseudocode,pcode)存放在内存,再次调用时直接调用内存中的pcode,避免对相同M文件重复解析。可以用pcode 产生伪代码:难以阅读,保密性好例 p135 例46,MATLAB SDU,62,例2,利用函数文件,实现直角坐标(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

35、y=:);rho,the=tran(x,y);rho the,MATLAB SDU,63,参数传递 在调用函数时,MATLAB用两个永久变量nargin和nargout分别记录调用该函数时的输入实参和输出实参的个数。只要在函数文件中包含这两个变量,就可以准确地知道该函数文件被调用时的输入输出参数个数,从而决定函数如何进行处理。,MATLAB SDU,64,参数传递,nargin在函数体内,用于获取实际输入宗量nargout在函数体内,用于获取实际输出宗量nargin(fun)获取fun指定函数的标称输入宗量数nargout(fun)获取fun指定函数的标称输出宗量数inputname(n)在函

36、数体内使用,给出第n个输入宗量的实际调用变量名,MATLAB SDU,65,例 nargin用法示例。函数文件examp.m:function fout=charray(a,b,c)if nargin=1 fout=a;elseif nargin=2 fout=a+b;elseif nargin=3 fout=(a*b*c)/2;end 命令文件mydemo.m:x=1:3;y=1;2;3;examp(x)examp(x,y)examp(x,y,3),MATLAB SDU,66,跨空间变量传递,跨空间计算串表达式的值跨空间赋值,MATLAB SDU,67,跨空间计算串表达式的值,前面已介绍了实

37、现不同工作空间之间变量传递的两种渠道:函数的输入输出宗量和全局变量。下面介绍第三个传递渠道:跨空间计算串表达式值的指令。evalin(workspace,expression)跨空间计算串表达式值说明:workspace可取两个值:base和caller该调用格式的执行机理:当workspace取base表示计算eval(expression)时,将从基本工作空间获得变量值。当workspace取caller表示计算eval(expression)时,将从主调函数工作空间获得变量值。主调函数是相对被调函数而言的。这里,被调函数是指evalin所在的函数。,MATLAB SDU,68,evali

38、n(workspace,expression1,expression2)跨空间计算替代串表达式值说明:workspace可取两个值:base和caller该调用格式的执行机理:先从所在函数空间获得变量值用eval(expression1)计算原串表达式;若该计算失败,则在从workspace 指定的(基本或主调函数)工作空间获取变量值,再通过eval(expression2)计算替代串表达式。,MATLAB SDU,69,跨空间赋值,实现不同工作空间之间变量传递的第四个传递渠道是跨空间赋值指令:assignin(workspace,VN,x)跨空间向VN变量赋值说明:把当前工作空间内变量x的值

39、赋给workspace指定空间名的VN变量。,MATLAB SDU,70,四、程序调试与优化,程序调试概述一般调试技巧程序调试器的使用程序设计的优化,MATLAB SDU,71,程序调试概述,MATLAB的调试器(Debugger)可以迅速地帮您找出程序错误所在,其功能包含:查询每一个函数的工作空间(Workspace).显示函数调用的堆栈(Function Call Stack).一行一行地执行M文件.,MATLAB SDU,72,一般调试技巧,一般而言,计算机程序可能发生的错误可分为两种:语法错误(Syntax Errors)逻辑错误(Logic Errors)一般检测逻辑错误的方法:删除

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

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

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号