ImageVerifierCode 换一换
格式:PPT , 页数:57 ,大小:273.25KB ,
文档编号:4373141      下载积分:28 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
系统将以此处填写的邮箱或者手机号生成账号和密码,方便再次下载。 如填写123,账号和密码都是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

优惠套餐
 

温馨提示:若手机下载失败,请复制以下地址【https://www.163wenku.com/d-4373141.html】到电脑浏览器->登陆(账号密码均为手机号或邮箱;不要扫码登陆)->重新下载(不再收费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  
下载须知

1: 试题类文档的标题没说有答案,则无答案;主观题也可能无答案。PPT的音视频可能无法播放。 请谨慎下单,一旦售出,概不退换。
2: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
3: 本文为用户(晟晟文业)主动上传,所有收益归该用户。163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

1,本文(文件和面向对象编程汇总课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!

文件和面向对象编程汇总课件.ppt

1、第七章 M 文件和面向对象编程v脚本;v函数;v函数句柄的创建和使用;v程序调试和剖析;v数据结构(类、对象);v重载和继承;v面向对象编程内容:7.1 入门通过M脚本文件,画出下列分段函数所表示的曲面。15457.0117575.015457.0),(215.175.375.0216215.175.375.02112122212212122xxexxexxexxpxxxxxxxxa=2;b=2;clf;x=-a:0.2:a;y=-b:0.2:b;for i=1:length(y)for j=1:length(x)if x(j)+y(i)1 z(i,j)=0.5457*exp(-0.75*y(

2、i)2-3.75*x(j)2-1.5*x(j);elseif x(j)+y(i)=-1 z(i,j)=0.5457*exp(-0.75*y(i)2-3.75*x(j)2+1.5*x(j);else z(i,j)=0.7575*exp(-y(i)2-6*x(j)2);end endendaxis(-a,a,-b,b,min(min(z),max(max(z);colormap(flipud(winter);surf(x,y,z);7.2 MATLAB 控制流7.2.1 for循环结构语法形式:for x=array(commands)endfor i=1:10;x(i)=i;end;7.2.2

3、while循环结构语法形式:while expression(commands)endi=1;while i eps*b x=(a+b)/2;fx=x3-2*x-5;if sign(fx)=sign(fa)a=x;fa=fx;else b=x;fb=fx;endendx7.2.3 if-else-end分支(1)if 表达式执行语句end功能:如果表达式的值为真,就执行语句,否则执行end后面的语句。(2)if 表达式执行语句1else执行语句2end 功能:如果表达式的值为真,就执行语句1,否则执行语句2。(3)if 表达式1执行语句1 elseif 表达式2执行语句2 else语句n en

4、d 功能:如果表达式1的值为真,就执行语句1,然后跳出if执行语句;否则判断表达式2,如果表达式2的值为真,就执行语句2,然后跳出if执行语句.否则依此类推,一直进行下去。如果所有的表达式的值都为假,就执行end后面的语句。7.2.4 switch-case 结构Switch语句的形式为:switch 表达式 case 常量表达式1 语句块1 case 常量表达式2 语句块2 case 常量表达式n,常量表达式n+1,语句块notherwise语句块n+1end功能:switch语句后面的表达式可以为任何类型;每个case后面的常量表达式可以是多个,也可以是不同类型;与if语句不同的是,各个c

5、ase 和otherwise 语句出现的先后顺序不会影响程序运行的结果。例:编一个转换成绩等级的函数文件,其中成绩等级转换标准为考试成绩分数在90,100分显示优秀;在80,90)分显示良好;在60,80)分显示及格;在0,60)分显示不及格。function result=ff(x)n=fix(x/10);switch n case 9,10 disp(优秀)case 8 disp(良好)case 6,7 disp(及格)otherwise disp(不及格)end语法结构try(commands1)catch(commands2)end说明:v只有当matlab在执行组命令1时出现了错误后

6、,组命令2才会被执行v可调用lasterr函数查询出错原因v当执行组命令2时又出错,matlab将终止该结构7.2.5 try-catch结构例 对(3 3)魔方阵的行进行援引,当“行下标”超出魔方阵的最大行数时,将改向对最后一行的援引,并显示“出错”警告。clear,N=4;A=magic(3);tryA_N=A(N,:)catchA_end=A(end,:)endlasterr7.2.6 控制程序流的其它常用指令v1 return指令通常,当被调函数执行完后,matlab会自动地把控制转至主调函数或者指令窗。如果在被调函数中插入了return指令,可以强制matlab结束执行该函数并把控制

7、转出。2 input和keyboard指令(1)inputinput指令将matlab的“控制权”暂时交给用户。此后,用户通过键盘键入数值、字符串或者表达式,并经“回车”把键入内容输入工作空间,同时把“控制权”交还给matlab。格式:v=input(message)将用户键入的内容赋给变量vv=input(message,s)将用户键入的内容作为字符串赋给变量v说明:v指令中message是将显示在屏幕上的字符串,是必不可少的v对于第一种调用格式,用户可以输入数值、字符串、元胞数组等各种形式的数据。v对于第二种调用格式,不管键入什么,总以字符串形式赋给变量v。(2)keyboard指令当程序

8、遇到keyboard时,matlab将“控制权”交给键盘,用户可以从键盘输入各种合法的matlab指令,只有当用户使用return指令结束输入后,“控制权”才交还给程序。(3)pause指令pause暂停执行文件,等待用户按任意键继续。pause(n)在继续执行之前,暂停n秒(4)break指令break指令可以导致包含有该指令的while、for等指令终止。常用的警示指令:verror(message)显示出错信息message,终止程序。verrortrap 错误发生后,程序继续执行与否的双位开关。vlasterr 显示matlab自动判断的最新出错原因并终止程序。vwarning(mes

9、sage)显示警告信息message,程序继续运行。vlastwarn 显示matlab自动给出的最新警告,程序继续运行。(5)error和warning指令7.3 脚本文件和函数文件7.3.1 M脚本文件M脚本文件特点:v它只是一串按用户意图排列而成的matlab指令集合。v脚本文件运行后,所产生的所有变量都驻留在matlab基本工作空间中。7.3.2 M函数文件与脚本文件不同,函数文件犹如一个“黑箱”,它的特点:v从形式上看,与脚本文件不同,函数文件的第一行总是以“function”引导的函数申明行。vmatlab允许使用比“标称数目”较少的输入输出参数,实现对函数的调用。v从运行上看,中

10、间变量都存在在临时工作空间。v在matlab整个运行期间,可以产生任意多个临时函数空间。v假如在函数文件中,发生对某脚本文件的调用,那么该脚本文件运行产生的所有变量都存放于函数空间之中,而不是存放在基本空间。7.3.3 局部变量和全局变量(1)局部(local)变量存在于函数空间内部的中间变量,产生于该函数的运行过程中,其影响范围仅限于该函数本身。(2)全局(Global)变量通过global指令,matlab允许几个不同的函数空间以及基本工作空间共享同一个变量,这种被共享的变量称为全局变量。说明:v没采用global定义的函数或基本工作空间,将无权享用全局变量。v除非与全局变量联系的所有工作

11、空间都被删除,否则全局变量依然存在。v对全局变量的定义必须在该变量被使用之前进行。建议把全局变量的定义放在函数体的首行位置。v建议选用大写字符命名全局变量v不提倡使用全局变量。7.3.4 M文件的一般结构演示:(A)编写一个画任意半径任意色彩线型的圆。(B)完整函数文件的基本结构。(C)函数文件各基本组成部分的作用。(参看lesson7-1)M 函数文件的结构如下:v函数申明行vH1行(The first help text line)v在线帮助文本(help text)区v编写和修改记录v函数体7.3.5 P码文件1、语法分析过程和伪代码一个M文件首次被调用时,matlab将首先对该M文件进

12、行语法分析,并把生成的相应内部伪代码文件存放在内存中。Matlab的分析器总是把M文件连同被它调用的所有函数M文件一起变成P码文件形式:文件名相同,扩展名是”.p”2、P码文件的预生成P码文件可以被预先生成pcode FunName在当前目录上生成FunName.ppcode FunName-inplace在FunName.m所在目录上生成FunName.pP码文件的优点:v运行速度快;v程序保密性好;3、内存中P码文件的列表和清除inmem罗列出内存中所有P码文件名clear FunName清除内存中的FunName.pP码文件clear functions清除内存中的所有P码文件7.3.6

13、 Matlab 的搜索过程假设Matlab在一个文件中碰到指令cow时,它将按以下步骤进行检索。(1)检查cow是否一个变量名;如果不是,执行下一步。(2)检查cow是不是内建函数(Built-in Function);假如不是,执行下一步。(3)检查cow是不是cow所在的M文件中的一个子函数;假如不是,再往下执行。(4)检查cow是不是cow所在的M文件中的一个私有函数;假如不是,在往下执行。(5)检查cow是不是当前目录上的文件;假如不是,再往下执行。(6)检查搜索路径上是否有cow存在。7.4 变量的检测传递和限权使用函数7.4.1 输入输出宗量检测指令nargin在函数体内,用于获取

14、实际输入参数nargout在函数体内,用于获取实际输出参数nargin(fun)获取fun指定函数的标称输入参数个数nargout(fun)获取fun指定函数的标称输出参数个数inputname(n)在函数体内使用,给出第n个输入参数的实际调用变量名7.4.2“变长度”输入输出参数varargin“变长度”输入参数列表varargout“变长度”输出参数列表例 编写程序,画两个同心圆环,其中一个半径由独立输入参数定义,另一个由变长度输入参数的第一个参数定义,可以用任何指定的色彩,线型绘制;(lesson7_2)有输出情况r1=1;r2=3;x1,y1,x2,y2,s1,s2=lesson7_2

15、(r1);x1,y1,x2,y2=lesson7_2(r1,r2);x1,y1,x2,y2,s1,s2=lesson7_2(r1,r2);无输出情况r1=1;r2=0.6;subplot(1,3,1),lesson7_2(r1,r2);subplot(1,3,2),lesson7_2(r1,r2,Marker,o)subplot(1,3,3);lesson7_2(r1,r2,LineWidth,5,Color,1 0.4 0)7.4.3 跨空间变量传递1、跨空间计算串表达式的值evalin(workspace,expression)跨空间计算表达式值evalin(workspace,expre

16、ssion1,expression2)跨空间计算替代串表达式值例 编写绘制正多边形或圆的程序。(lesson7_3)clear,a=30;t=(0:a)/a*2*pi;sss=base,caller,self;for k=1:3y0=lesson7_3(8,sssk);subplot(1,3,k)plot(real(y0),imag(y0),r,LineWidth,3),axis square imageend2、跨空间赋值assignin(workspace,VN,x)跨空间向VN变量赋值lesson7_4.mfunction y=lesson7_4(x)y=sqrt(x);t=x2;ass

17、ignin(base,yy,t)7.4.4 子函数和私用函数1、子函数matlab允许1个M函数文件包含多个函数的代码。其中,第一个出现的称为主函数,该文件中其他的函数则称为子函数。保存时所用函数文件名与主函数定义名相同。外部程序只能对主函数进行调用。子函数性质:v每个子函数的第一行是其自己的函数申明行v在M函数文件内,主函数的位置不可改变,但子函数的排列次序可以任意改变v子函数只能被处于同一文件的主函数或其他子函数调用v在M函数文件中,任何指令通过“名字”对函数进行调用时,子函数的优先级仅次于内装函数v同一文件的主函数、子函数的工作空间都是彼此独立的。2、私有函数所谓私用函数,是指位于pri

18、vate目录上的M文件函数,性质:v私用函数的构造与普通M函数完全相同v私用函数只能被private直接父目录上的M文件所调用,而不能被其他目录上的任何M文件或matlab指令窗中的命令所调用vM文件中,任何指令通过“名字”对函数进行调用时,私用函数的优先级虽低于内装函数和子函数,但高于其他任何目录上的函数。7.5 串演算函数为了提高计算的灵活性,matlab提供一种利用字符串进行计算的能力。7.5.1 evaly=eval(CEM)执行CEM指定的计算;y=eval(CEM1,CEM2)先执行CEM1指定的计算,如果出错,就执行CEM2y1,y2,=eval(CEM)执行CEM代表的函数文件

19、调用,并输出计算结果。说明veval指令的输入参数必须是字符串v构成字符串的CEM,可以是matlab任何合法的指 令、表达式、语句或M文件名v第3种格式种的CEM只能是M函数文件名。例 计算“表达式”串,产生向量值。clear,t=pi;cem=t/2,t*2,sin(t);y=eval(cem)例 计算“语句”串,创建变量。clear,t=pi;eval(theta=t/2,y=sin(theta);who例 计算“替代”串。A=ones(2,1);B=ones(1,3);c=eval(B*A,A*B);errmessage=lasterr例 计算“合成”串。CEM=cos,sin,tan

20、;for k=1:3theta=pi*k/12;y(1,k)=eval(CEM1,(,num2str(theta),);end7.5.2 fevaly1,y2,=feval(FN,arg1,arg2,)用参量arg1,arg2等执行FN函数指定的计算。说明:vFN只能是函数名。v在既可以使用eval,又可以使用feval的情况下,feval运行效率更高。feval 和eval 运行区别:feval 的FN 绝对不能是表达式x=pi/4;Ve=eval(1+sin(x)Vf=feval(1+sin(x),x)feval 和eval 调用区别:feval 的FN 只接受函数名。randn(seed

21、,1);A=rand(2,2);ue,de,ve=eval(svd(A);disp(Results by eval);disp(ue,de,ve);disp(blanks(1)uf,df,vf=feval(svd,A);disp(Results by feval);disp(uf,df,vf)7.5.3 内联函数1、内联函数的创建inline(CE)把串表达式转化为输入参数自动生成的内联函数;inline(CE,arg1,arg2,)把串表达式转化为arg1,arg2等指定输入参数的内联函数;inline(CE,n)把串表达式转化为x,P1,P2,Pn等指定输入参数的内联函数2、涉及内联函数性

22、质的指令class(inline_fun)给出内联函数类型char(inline_fun)给出内联函数计算公式;argnames(inline_fun)给出内联函数的输入参数vectorize(inline_fun)使用内联函数适用”数组运算”规则。3、内联函数创建和应用示例内联函数的第一种创建格式适于“数组运算”。clear,F1=inline(sin(rho)/rho);f1=F1(2);FF1=vectorize(F1);xx=0.5,1,1.5,2;ff1=FF1(xx);第一种内联函数创建格式的缺陷;含向量的多宗量输入的赋值。G1=inline(a*exp(x(1)*cos(x(2)

23、,G1(2,-1,pi/3);G2=inline(a*exp(x(1)*cos(x(2),a,x),G2(2,-1,pi/3)产生向量输入、向量输出的内联函数;Y2=inline(x(1)2;3*x(1)*sin(x(2)argnames(Y2)x=4,pi/6;y2=Y2(x)最简练格式创建内联函数;内联函数可被feval 指令调用Z2=inline(P1*x*sin(x2+P2),2)z2=Z2(2,2,3)fz2=feval(Z2,2,2,3)7.6 面向对象编程1、类和对象类名含义cell元胞数组char字符串数组double双精度数值数组sparse稀疏矩阵struct构架数组mat

24、lab内装类2、新类应包含的基本内容(1)创建类目录(2)选定待建类的数据结构(3)对象构造函数(4)显示函数(5)与其他类之间的转换函数(6)其他重载函数和重载运算(参见queue类)(1)创建一个队列对象,并显示qe=Hello!你好!;Q=queue(qe)(2)类别检查和对象判断class(Q)isobject(Q)isa(Q,queue)(3)“空”队列判断isempty(Q)(4)利用“入队”函数,使队列变长a=1,2,3;4,5,6;b1=This;b2=is;b3=a cell array;comein(Q,a,b)(5)显示队列Q中具体元素的内容display(Q,2)(6)

25、把Q队列第一个元素和其余部分分离,并生成新队列QQnn,vv,QQ=goout(Q)(7)采用双下标法,显示QQ(1,2)的内容display(QQ,1,1),display(QQ,1,2)3、继承性及其应用class函数class(VN)返回变量VN的类别名字符串;V_obj=class(VS,ClassName)把构架VS定义为ClassName类数据对象;V_obj=class(VS,SubClassName,Parent1,Parent2,)把构架VS定义为Parent1,Parent2等父类的SubClassName子类对象。(1)堆栈对象的创建AA=继承性;ST=stack(AA)

26、(2)类别检查class(ST)isa(ST,stack)isa(ST,queue)(3)“空”堆栈判断isempty(ST)(4)把元素压入堆栈BB=1:6;CC=sym(x2+4*x);comein(ST,BB,CC);(5)显示堆栈中第三元素的内容display(ST,3)(6)从堆栈弹出元素Name1,Value1,ST_1=goout(ST)1、利用for循环找出100200 之间的所有素数。(rem(m,i)练习题disp(100200 之间的所有素数为:)for m=100:200 k=fix(sqrt(m);%求m的算术平方根然后取整.for i=2:k+1 if rem(m,i)=0%求整数m与i的余数 break;end end if i=k+1 disp(int2str(m)%以字符串的形式显示素数.end end

侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|