收藏 分销(赏)

MATLAB程序设计与调试优化ppt课件.ppt

上传人:二*** 文档编号:12675344 上传时间:2025-11-23 格式:PPT 页数:31 大小:485.50KB 下载积分:5 金币
下载 相关 举报
MATLAB程序设计与调试优化ppt课件.ppt_第1页
第1页 / 共31页
本文档共31页,全文阅读请下载到手机保存,查看更方便
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,.,*,MATLAB,程序设计与调试优化,2025/11/23 周日,1,.,应用背景,已知电源的幅值和相位,,M,处的有功和无功(分别为,2,和,1,),,Z,的值,如何计算,M,处的电压(幅值和相位)?,Z=j0.1,P+jQ,M,2025/11/23 周日,2,.,数学方程,2025/11/23 周日,3,.,求解方法(牛顿,-,拉夫逊法),对于含,n,个未知数的,n,个方程,,估计值与解之间的误差为,2025/11/23 周日,4,.,求解方法,J,2025/11/23 周日,5,.,求解方法,X=0;1;,T=0.0001;,for m=1:10,fP=10*X(2)*sin(X(1)+2;,fQ=-10*X(2)*cos(X(1)+10*X(2)2+1;,if fP T&fQT,V=X(2),th=X(1)*180/pi,break;,end,dfP1=10*X(2)*cos(X(1);,dfP2=10*sin(X(1);,dfQ1=10*X(2)*sin(X(1);,dfQ2=-10*cos(X(1)+20*X(2);,J=dfP1,dfP2;dfQ1,dfQ2;,dx=-inv(J)*fP;fQ;,X=X+dx;,end,2025/11/23 周日,6,.,MATLAB,程序的基本组成部分,说明部分(或称之为注释部分),清除命令,(,可选,),定义变量,(,局部变量和全局变量,),按照顺序行执行的命令语句,控制语句开始,控制语句体,控制语句结束,其他命令,(,如绘图等,),2025/11/23 周日,7,.,工作环境的设定,设置路径的原因:,对于用户程序中使用的文件名和变量名,系统按照以,下顺序搜索:,(1),查找对象是否是工作空间的变量。,(2),查找对象是否是系统的内部函数。,(3),查找对象是否是在系统的当前目录下,2025/11/23 周日,8,.,MatLab,的基本语法,数据类型,常量和变量,程序运算符,程序控制语句,M,文件,2025/11/23 周日,9,.,MatLab,的基本语法,-,数据类型,(1),MatLab 6.5,共有,7,种基本的数据类型以及若干衍生类型。汇总如下图所示。,2025/11/23 周日,10,.,MatLab,的基本语法,-,常量和变量,MatLab,中的常量:,类似于,c,语言中的整型常量和实型常量,常量的表方法一般采用十进制数来表示,可以带正负号和小数点,当然也可采用科学记数法。如,1,、,25,、,0.0033,、,2e,7,、,pi,、,2,十,3i,等都是,MATLAB,的合法常量。这里的,2,十,3i,是复数常量,它是由实数与虚数单位,i,组成,MATLAB,中的变量:,一般无需事先定义。一个程序中的变量以其名称在操作语句第一次合法出现而定义。如果这个变量已经存在,那么,MATLAB,将改变它的内容,如,a,2.5,定义了一个变量,a,,并给它赋值,2.5,;如果再输入,a,3,,那么变量,a,的值就变为,3,。,2025/11/23 周日,11,.,MatLab,的基本语法,-,常量和变量(,2,),MATLAB,中的变量命名应该遵循以下规则:,变量名必须以字母开头,后面可以是任意的字母、数字或下划线。,MATLAB,变量名有效的最大长度是,31,。,MLAB,的变量要区分大小写,如:,MY_NAME,,,My_name,,,my_name,分别表示不同的变量。,MatLab,自身带有一些具有特殊含义的变量和常量,用户在使用时不能对这些量进行变更。例如:,pi,表示圆周率,,inf,表示数学中的正无穷大等。,2025/11/23 周日,12,.,MatLab,的基本语法 程序运算符,MATLAB,的运算符可分为三类:,算术运算符,关系运算符,逻辑运算符,2025/11/23 周日,13,.,MatLab,的基本语法 ,程序控制语句,MATLAB,控制语句主要有以下几类:,for,循环结构,While,循环结构,if,else,end,分支结构,switch,case,分支结构,2025/11/23 周日,14,.,MatLab,的基本语法 程序控制语句,for,循环结构,for,循环语句通常用来执行循环次数已知的情况。它可以按照用户指定的次数来执行循环体中的内容。,调用格式:,for x,初值:步长:终值,循环体,end,注意:变量,x,通常称为循环变量;初值、终值和步长可以是标量,也可以是表达式。当循环语句开始执行时,变量,x,的值被赋为和初值相同的内容。每执行一次循环体中的内容,变量,x,的值就会按照步长的大小来改变。如果步长是一个正数,那么变量,x,的值增加一个步长;如果步长是一个负数,那么变量的值就减小一个步长。在步长为正的情况下,如果变量的值小于终值,就将继续执行循环体中的内容。当步长为负时,如果变量的值大于终值,也将继续执行循环体中的内容。如此循环,直到变量的值大于或者小于终值的内容,这个,for,语句循环就结束,而继续执行,end,语句下面的命令。语句中的步长可以省略不写,在这种情况下,默认的步长值为,1,。,for,循环语句允许嵌套,每一个“,for”,关键字必须和一个“,end”,配对。,2025/11/23 周日,15,.,MatLab,的基本语法 ,程序控制语句,While,循环结构,while,语句根据一个控制表达式的值来确定程序的运行方式。常用于事先不能确定循环次数的情况。,调用格式:,while,表达式,循环体,end,当表达式中的值为真时,执行循环体。当循环体执行完毕后,继续判断表达式的值,如果仍为真,那么继续执行循环体,如此循环,直到表达式的值为假时终止循环。当表达式的值是一个矩阵,且矩阵中所有元素都不为零时,才执行循环体中的内容。如果表达式,A,是一个空矩阵,那么循环体中的内容永远不会被执行。另外,要想在任何时候终止循环,(for,或,while,循环,),,可利用,break,语句。终止循环后继续执行,end,语句下面的语句。,2025/11/23 周日,16,.,MatLab,的基本语法 ,程序控制语句,if,else,end,分支结构,if,语句是一种条件选择结构语句,它根据不同逻辑表达式的值来判断程序在执行过程中需要执行哪些语句。,调用格式:,if,逻辑表达式,命令语句体,end,在程序执行该语句的过程中,首先判断逻辑表达式的值。如果逻辑表达式的值为真,那么程序就会执行命令语句体的所有语句。如果逻辑表达式的值为假,那么就跳过命令语句体,继续执行,end,语句之后的语句。,2025/11/23 周日,17,.,MatLab,的基本语法 ,程序控制语句,switch,case,分支结构,switch,语句可以根据一个变量或表达式的值执行特定的语句。,调用格式,:,switch,表达式,0,case,表达式,l,的值,命令行,l,case,表达式,2,的值,命令行,2,.,otherwise,命令行,n,end,先计算,switch,后面表达式,0,的值,然后检查,case,语句后面的值是否与表达式,0,的值相等,如表达式,1,的值与之相等,则执行命令行,1,,否则继续检查第二个,case,子句,以此类推,如果所有,case,子句的值均不等于表达式,0,的值,则执行,othewise,语句后面的命令行,n,。,和,c,语言不同的是,在,switch,结构中,如果一个,case,条件满足,那么在执行完这个,case,语句中的语句体之后,就会立接去执行,end,语句后面的语句而不并判断其他,case,语句的情况。,2025/11/23 周日,18,.,MatLab,的基本语法 ,M,文件,引入,M,文件的原因:,对于比较简单的问题和一次性问题,通过指令窗中直接输入一组指令去求解,也许是比较简便、快捷的。但当待解决问题所需的指令较多和所用指令结构较复杂时,或当一组指令通过改变少量参数就可以被反复使用去解决不同问题时,直接在指令窗中输入指令的方法就显得烦琐。为了代替在,MATLAB,提示符下输入的多条,MATLAB,命令语句,可以把这些命令写入一个文本文件,这个文本文件可用一个编辑器创建。每当用户输入这个文件名以及它的自变量时,这些命令就由,MATLAB,执行。当文件中最后一个命令被执行时,,MATLAB,能再从指令窗口读取命令,这样的文件就叫做,M,文件。,2025/11/23 周日,19,.,MatLab,的基本语法 ,M,文件类型,M,文件的类型,:,脚本,(Script),文件,教材中也称之为命令文件,函数,(Function),文件,这两种文件均以,“,.m,”,为后缀。,2025/11/23 周日,20,.,MatLab,的基本语法 脚本,M,文件,脚本,(Script),文件(命令文件):,脚本文件的主要用途是使命令输入更加简单化。如果用户需要重复输入许多命令,即可将这些命令放在一个脚本文件里,(,脚本文件没有输入参数和输出参数,),。可以说,脚本文件只不过是将用户在,MATLAB,的命令行窗口中输入的一串命令用另外一个名称代替而己,并且脚本文件的运行结果每次都是相同的。,特点如下:,该文件中的指令形式和前后位置,与解决同一个问题时在指令窗中输入的那组指令没有任何区别。,MATLAB,在运行这个脚本时,只是简单地从文件中读取一条条指令送到,MATLAB,中执行。,与在指令窗中直接运行指令一样,脚本文件运行产生的变量都是驻留在,MATLAB,基本工作空间中。,2025/11/23 周日,21,.,MatLab,的基本语法 函数,M,文件,函数,(Function),文件:,函数文件的主要用途是用来扩充,MATLAB,的应用范围和满足用户不同的实际应用需求。函数文件可以接受输入变量,也可以返回输出变量。除了输入变量和输出变量以外,在函数文件内部的其他变量通常为该函数文件的局部变量,并不会出现在,MATLAB,的工作空间内。而能够保留在,MATLAB,的工作空间内的变量只有该函数文件的输入和输出变量。也就是说,函数文件对于变量的运算是在函数本身的工作空间内进行的,它和,MATLAB,的命令窗口中的工作空间是相互独立的。,MATLAB,对函数文件的处理与对脚本文件的处理不同,函数文件对外只表现其输入参数和输出结果,内部的运作对外是封闭的,利用这个特性,容易实现编程的模块化。函数文件的具体特点如下:,从形式上看,与脚本文件不同,函数文件的第一行总是以,“,function,”,引导的,“,函数申明行,”,。,从运行上看,与脚本文件运行不同,每当函数文件运行,,MATLAB,就会专门为它开辟一个临时工作空间。称之为函数工作空间,(function workspace),。所有中间变量都存放在函数工作空间中。当执行完文件最后一条指令或遇到,return,时,就结束该函数文件的运行,同时该临时函数空间及其所有的中间变量就立即被清除。,函数空间随具体,M,函数文件的被调用而产生,随调用结束而删除。函数空间相对基本空间是独立的、临时的。在,MATLAB,整个运行期间,可以产生任意多个临时函数空间。,假如在函数文件中,发生对某脚本文件的调用,那么该脚本文件运行产生的所有变量都存放于该函数空间之中,而不是存放在基本空间。,2025/11/23 周日,22,.,M,文件的命名,不能用数字作为文件名。,不能用和,Matlab,特有变量名相同的名称。,不能和已在,workspace,中的变量或常量同名。,2025/11/23 周日,23,.,MatLab,程序调试和代码优化,2025/11/23 周日,24,.,MatLab,程序的常见错误,编写,M,文件时,常见的错误有两种:语法错误和运行错误。,语法错误:指变量名、函数名的误写,标点符号的缺漏等。这类错误,Matlab,能在运行前发现给出提示(包括相应的错误原因和所在位置),并终止运行。,运行错误:指算法本身引起的,发生在运行过程中的错误。相对语法错误,动态的运行错误较难查找和处理。,2025/11/23 周日,25,.,运行错误难以查找和处理的原因,运行错误来源多元化。如来源于算法模型和期望目标是否一致,程序模型和算法是否一致,涉及用户对期望目标原理的理解、对算法的理解,还涉及用户对,Matlab,指令的理解、对程序流的理解,及对,Matlab,工作原理的理解。,运行错误的表现形式多样化:程序正常运行但结果不对,程序运行不正常而中断等。,运行错误是动态错误。尤其是,M,函数文件,它一旦停止运行,其中间变量被删除一空,错误很难查找。另外有些情况下结果正常,有些情况下结果不正确。,程序的运行错误必须借助程序调试技术才能解决。,2025/11/23 周日,26,.,MatLab,程序调试方法,直接调试法,利用调试器,2025/11/23 周日,27,.,直接调试法,由于,MatLab,语言可读性强,对于较简单的程序直接调试法比较有效。直接调试一般包括以下几个方面:,检查所调用的函数或要载入的数据文件是否在当前目录或搜索路径上。,将重点怀疑的语句行、指令行后的“;”去掉,使计算结果能显示在主命令窗口。,在适当的位置加入显示某些关键变量值的语句(如用,disp,),利用,echo,指令,使运行时,在屏幕上逐行显示文件内容。,echo on,能显示,M,脚本文件;,echo FunName on,能显示名为,FunName,的,M,函数文件。,在程序适当位置加入,keyboard,指令。,Matlab,运行到这一指令时,会暂停执行,并在,MatLab,指令窗口中出现,K,提示符。此时用户可以输入指令查看各种变量的值,也可修改变量的值。输入回车后结束查看,原文件继续运行。,2025/11/23 周日,28,.,调试器的使用,MatLab,的调试器和,M,文件编辑器集成一体。,断点设置,或清除,dbstop/dbclear,清除全部断点,(dbclear all),单步执行,dbstep,深入被调函数(,dbstep in,),跳出被调函数(,dbstep out,),连续执行(,dbcont,),结束调试(,dbquit,),2025/11/23 周日,29,.,MatLab,程序的性能优化,步骤:,找出耗时最多的程序“瓶颈”。,用更好的程序取代“瓶颈”程序,。,2025/11/23 周日,30,.,提高,MatLab,运行速度的有效措施,循环的向量化,尽可能采用,MatLab,提供的函数命令,循环内数组的预配置,避免在循环体内频繁的动态配置数据。,2025/11/23 周日,31,.,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 初中其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服