欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2022年2022年精通matlab.版.M文件和面向对象编程 .pdf

    • 资源ID:39692682       资源大小:642.67KB        全文页数:25页
    • 资源格式: PDF        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2022年2022年精通matlab.版.M文件和面向对象编程 .pdf

    1 第七章 M 文件和面向对象编程假如读者想灵活运用MATLAB去解决实际问题,想充分调动MATLAB 科学技术资源,想理解MATLAB版本升级所依仗的基础,那么本章内容将十分有用。本章将涉及比较深层的MATLAB内容:脚本;函数(一般函数、内联函数、子函数、私用函数、方法函数);函数句柄的创建和使用;程序调试和剖析;数据结构(类、对象);重载和继承;面向对象编程。本章配备了许多精心设计的算例。这些算例是完整的,可直接演练的。读者通过这些算例,将真切感受到抽象概念的内涵、各指令间的协调,将从感知上领悟到面向对象编程的优越和至关要领。本章新增了第7.7 节,专门阐述函数句柄的创建和使用,它适用于MATLAB6.x版;而新增的第7.9.3 节中关于程序性能优化的内容,则仅适用于MATLAB6.5以后版。7.1 入门【例 7.1-1】通过 M 脚本文件,画出下列分段函数所表示的曲面。-+=+-15457.0117575.015457.0),(215.175.375.0216215.175.375.02112122212212122xxexxexxexxpxxxxxxxx(1)图 7.1-1 exm0701_1.m%exm0701_1.m a=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(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);名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 25 页 -2 else z(i,j)=0.7575*exp(-y(i)2-6.*x(j)2);end end end axis(-a,a,-b,b,min(min(z),max(max(z);colormap(flipud(winter);surf(x,y,z);(2)exm0701_1图 7.1-2 【例 7.1-2】通过 M 函数文件画出上例分段函数的曲面。exm0701_2(2,2)7.2 M 文本编辑器7.3 MATLAB控制流7.3.1 for 循环结构【例 7.3.1-1】一个简单的for 循环示例。for i=1:10;x(i)=i;end;x x=1 2 3 4 5 6 7 8 9 10 7.3.2 while 循环结构【例 7.3.2-1】Fibonacci 数组的元素满足Fibonacci 规则:12+=kkkaaa,),2,1(=k;且121=aa。现要求该数组中第一个大于10000 的元素。a(1)=1;a(2)=1;i=2;while a(i)8 sums=number*0.95*cost;end,sums sums=114.0000【例 7.3.3-2】用 for 循环指令来寻求Fibonacc 数组中第一个大于10000 的元素。n=100;a=ones(1,n);for i=3:n a(i)=a(i-1)+a(i-2);if a(i)=10000 a(i),break;end;end,i ans=10946 i=21 7.3.4 switch-case 结构【例 7.3.4-1】学生的成绩管理,用来演示switch 结构的应用。clear;%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);%S=struct(Name,Name,Marks,Mark,Rank,Rank);%for i=1:5 switch S(i).Marks case 100 S(i).Rank=满分;case a S(i).Rank=优秀;case b S(i).Rank=良好;case c S(i).Rank=及格;otherwise S(i).Rank=不及格;名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 25 页 -4 end end%disp(学生姓名 ,得分 ,等级);disp()for i=1:5;disp(S(i).Name,blanks(6),num2str(S(i).Marks),blanks(6),S(i).Rank);end;学生姓名得分等级 Jack 72 及格Marry 83 良好Peter 56 不及格 Rose 94 优秀 Tom 100 满分7.3.5 try-catch 结构【例7.3.5-1】try-catch 结构应用实例:对)33(魔方阵的行进行援引,当“行下标”超出魔方阵的最大行数时,将改向对最后一行的援引,并显示“出错”警告。clear,N=4;A=magic(3);try A_N=A(N,:)catch A_end=A(end,:)end lasterr A_end=4 9 2 ans=Index exceeds matrix dimensions.7.3.6 控制程序流的其它常用指令7.3.6.1 return 指令7.3.6.2 input 和 keyboard 指令7.3.6.3 yesinput 指令7.3.6.4 pause指令7.3.6.5 break 指令7.3.6.6 error 和 warning 指令7.4 脚本文件和函数文件7.4.1 M 脚本文件名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 25 页 -5 7.4.2 M 函数文件7.4.3 局部变量和全局变量7.4.4 M 文件的一般结构【例 7.4.4-1】M 函数文件示例。本例演示:(A)编写一个画任意半径任意色彩线型的圆。(B)完整函数文件的基本结构。(C)函数文件各基本组成部分的作用。exm07044_1.m function sa=exm07044_1(r,s)%CIRCLE%if nargin2 error(输入宗量太多。);end;if nargin=1 s=b;end;clf;t=0:pi/100:2*pi;x=r*exp(i*t);if nargout=0 plot(x,s);else sa=pi*r*r;fill(real(x),imag(x),s)endaxis(square)7.4.5 P 码文件7.4.5.1 语法分析过程和伪代码7.4.5.2 P码文件的预生成7.4.5.3 内存中 P码文件的列表和清除7.4.6 MATLAB的搜索过程7.5 变量的检测传递和限权使用函数名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 25 页 -6 7.5.1 输入输出宗量检测指令7.5.2“变长度变长度”输入输出宗量【例 7.5.2-1】变长度宗量使用示例。(1)exm07052_1.m function varargout=exm07052_1(r,varargin)%RINGZY Plot a ring and calculate the area of the ring.%vin=length(varargin);Nin=vin+1;%error(nargchk(1,Nin,nargin)%if nargout6%error(Too many output arguments)end t=0:pi/20:2*pi;x=r*exp(i*t);s=pi*r*r;if nargout=0 switch Nin case 1 plot(x,b)case 2 r2=varargin1;%x2=r2*exp(i*t);plot(x,b);hold on;plot(x2,b);hold off otherwise r2=varargin1;%x2=r2*exp(i*t);plot(x,varargin2:end);hold on%plot(x2,varargin2:end);hold off%end;axis(square)else varargout1=real(x);varargout2=imag(x);%varargout5=pi*r*r;varargout6=;%if Nin1 r2=varargin1;%x2=r2*exp(i*t);varargout3=real(x2);varargout4=imag(x2);%varargout6=pi*(r2-r22);%end;end (2)r1=1;r2=3;x1,y1,x2,y2,s1,s2=exm07052_1(r1);x1,y1,x2,y2=exm07052_1(r1,r2);x1,y1,x2,y2,s1,s2=exm07052_1(r1,r2);(3)r1=1;r2=0.6;subplot(1,3,1),exm07052_1(r1,r2),名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 25 页 -7 subplot(1,3,2),exm07052_1(r1,r2,Marker,o)subplot(1,3,3),exm07052_1(r1,r2,LineWidth,5,Color,1 0.4 0)-101-1-0.500.51-101-1-0.500.51-101-1-0.500.51图 7.5-1 7.5.3 跨空间变量传递7.5.3.1 跨空间计算串表达式的值【例 7.5.3.1-1】本例演示:(A)编写绘制正多边形或圆的程序。(B)子函数与(母)函数的关系。(C)各种不同的工作空间。(D)evalin 运行机理与eval 的异同。(1)exm070531_1.m functiony1=exm070531_1(a,s)t=(0:a)/a*2*pi;y1=subevalinzzy(4,s);%-subfunction -function y2=subevalinzzy(a,s)t=(0:a)/a*2*pi;ss=a*exp(i*t);switch s case base,caller y2=evalin(s,ss);case self y2=eval(ss);end(2)clear,a=30;t=(0:a)/a*2*pi;sss=base,caller,self;for k=1:3 y0=exm070531_1(8,sssk);subplot(1,3,k)plot(real(y0),imag(y0),r,LineWidth,3),axis square image end 名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 25 页 -8-20020-20-1001020-505-505-4-2024-4-2024图 7.5-2 7.5.3.2 跨空间赋值【例 7.5.3.2-1】assignin 运作机理示范。(1)exm070532_1.m function y=exm070532_1(x)y=sqrt(x);t=x2;assignin(base,yy,t)(2)clear;x=4;y=exm070532_1(x);disp(blanks(5),x,blanks(5),y,blanks(4),yy),disp(x,y,yy)x y yy 4 2 167.5.4 子函数和私用函数7.5.4.1 子函数7.5.4.2 私用函数7.6 串演算函数7.6.1 eval【例 7.6.1-1】计算“表达式”串,产生向量值。clear,t=pi;cem=t/2,t*2,sin(t);y=eval(cem)y=1.5708 6.2832 0.0000【例 7.6.1-2】计算“语句”串,创建变量。clear,t=pi;eval(theta=t/2,y=sin(theta);who theta=1.5708 y=1 名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 25 页 -9 Your variables are:t theta y 【例 7.6.1-3】计算“替代”串。A=ones(2,1);B=ones(1,3);c=eval(B*A,A*B),errmessage=lasterr c=1 1 1 1 1 1 errmessage=Error using=*Inner matrix dimensions must agree.【例 7.6.1-4】计算“合成”串。CEM=cos,sin,tan;for k=1:3 theta=pi*k/12;y(1,k)=eval(CEM1,(,num2str(theta),);end y y=0.9659 0.8660 0.7071 7.6.2 feval【例 7.6.2-1】feval 和 eval 运行区别之一:feval 的 FN 绝对不能是表达式。x=pi/4;Ve=eval(1+sin(x)Ve=1.7071 Vf=feval(1+sin(x),x)?Error using=feval Invalid function name 1+sin(x).【例 7.6.2-2】feval 和 eval 调用区别:feval 的 FN 只接受函数名。本例两种方法以后者为好。randn(seed,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)Results by eval -0.9193 -0.3936 1.2212 0 -0.7897 -0.6135 -0.3936 0.9193 0 0.2633 -0.6135 0.7897 Results by feval -0.9193 -0.3936 1.2212 0 -0.7897 -0.6135 -0.3936 0.9193 0 0.2633 -0.6135 0.7897 7.6.3 内联函数7.6.3.1 内联函数的创建7.6.3.2 涉及内联函数性质的指令名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 25 页 -10 7.6.3.3 内联函数创建和应用示例【例 7.6.3.3-1】演示:内联函数的第一种创建格式;使内联函数适于“数组运算”。clear,F1=inline(sin(rho)/rho)F1=Inline function:F1(rho)=sin(rho)/rho f1=F1(2)f1=0.4546 FF1=vectorize(F1)xx=0.5,1,1.5,2;ff1=FF1(xx)FF1=Inline function:FF1(rho)=sin(rho)./rho ff1=0.9589 0.8415 0.6650 0.4546【例 7.6.3.3-2】演示:第一种内联函数创建格式的缺陷;含向量的多宗量输入的赋值。G1=inline(a*exp(x(1)*cos(x(2),G1(2,-1,pi/3)G1=Inline function:G1(a)=a*exp(x(1)*cos(x(2)?Error using=inline/subsref Too many inputs to inline function.G2=inline(a*exp(x(1)*cos(x(2),a,x),G2(2,-1,pi/3)G2=Inline function:G2(a,x)=a*exp(x(1)*cos(x(2)ans=0.3679【例 7.6.3.3-3】演示:产生向量输入、向量输出的内联函数;这种向量函数的调用方法。Y2=inline(x(1)2;3*x(1)*sin(x(2)argnames(Y2)Y2=Inline function:Y2(x)=x(1)2;3*x(1)*sin(x(2)ans=x x=4,pi/6;y2=Y2(x)y2=16.0000 6.0000【例 7.6.3.3-4】演示:最简练格式创建内联函数;内联函数可被feval 指令调用。Z2=inline(P1*x*sin(x2+P2),2)Z2=Inline function:Z2(x,P1,P2)=P1*x*sin(x2+P2)z2=Z2(2,2,3)fz2=feval(Z2,2,2,3)z2=2.6279 fz2=2.6279名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 25 页 -11 7.7 函数句柄7.7.1 函数句柄的创建和观察【例 7.7.1-1】为 MATLAB的“内建”函数创建函数句柄,并观察其内涵。(1)hsin=sin;(2)class(hsin)size(hsin)ans=function_handle ans=1 1 (3)CC=functions(hsin)CC=function:sin type:overloaded file:MATLAB built-in function methods:1x1 struct (4)CC.methods.sym ans=d:matlab6p5toolboxsymbolicsymsin 7.7.2 函数句柄的基本用法【例 7.7.2-1】本例通过函数及其句柄演示若干基本用法。(1)fhandle=str2func(sin);(2)ys=sin(pi/4)yfold=feval(sin,pi/4)yfnew=feval(fhandle,pi/4)ys=0.7071 yfold=0.7071 yfnew=0.7071(3)Alpha=sym(pi/4);yss=sin(Alpha)yfold=feval(sin,Alpha)ynews=feval(sin,Alpha)yss=1/2*2(1/2)yfold=1/2*2(1/2)ynews=1/2*2(1/2)名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 25 页 -12(4)xold=fminbnd(sin,0,2*pi)xnew=fminbnd(fhandle,0,2*pi)xold=4.7124 xnew=4.7124 【例 7.7.2-2】本例演示:如何避免创建“无效函数句柄“问题。(1)Hy2=fhzzy%fhzzy.m是随书光盘mfiles文件夹上的一个函数文件文件夹上的一个函数文件。Hy2=fhzzy (2)class(Hy2)size(Hy2)ans=function_handle ans=1 1 (3)feval(Hy2,line);?Error using=feval Undefined function fhzzy.【例 7.7.2-3】自建函数及其句柄的使用。(1)fhzzy.m function Hr=fhzzy(flag)%fhzzy%t=(0:100)/100*2*pi;x=sin(t);y=cos(t);Hr=cirline;feval(Hr,flag,x,y,t)%-subfunction-function cirline(wd,x,y,t)%switch wdcase line plot(t,x,b,t,y,r,LineWidth,2)case circle plot(x,y,g.,MarkerSize,30),axis square off otherwise error(输入宗量只能取 line 或 circle!)end shg 名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 25 页 -13(2)Hy3=fhzzy fhzzy(line);Hy3=fhzzy 01234567-1-0.8-0.6-0.4-0.200.20.40.60.81图 7.7-1 (3)which(fhzzy)fhzzy not found.(4)fhzzy(line)feval(fhzzy,line)?Undefined function or variable fhzzy.(5)feval(Hy3,line);【例 7.7.2-4】子函数句柄的创建与使用。(1)HCL=fhzzy(circle)HCL=cirline 图 7.7-2(2)名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 25 页 -14 tt=(0:100)/100*2*pi;xx=sin(tt);yy=cos(tt);cirline(circle,xx,yy,tt);feval(circle,xx,yy,tt)?Undefined function or variable cirline.(3)feval(HCL,circle,xx,yy,tt)7.8 创建用户工具箱7.8.1 MATLAB对工具箱文件的管理特点7.8.2 建立用户工具箱须知7.9 调试和剖析7.9.1 直接调试法7.9.2 调试器的使用7.9.2.1 图形式调试器图 7.9-1 7.9.2.2 调试器应用示例【例7.9.2.2.-1】本例的目标:对于任意随机向量,画出鲜明标志该随机向量均值、标准差的频数直方图(如图7.9-2),或给出绘制这种图形的数据。-3-2-101230510152025图 7.9-2 名师资料总结-精品资料欢迎下载-名师精心整理-第 14 页,共 25 页 -15(1)exm070922_1.m function nn,xx,xmu,xstd=exm070922_1(x)%xmu=mean(x);xstd=std(x);nn,xx=hist(x);if nargout=0 barzzy0(nn,xx,xmu,xstd)%end barzzy0.m function barzzy0(nn,xx,xmu,xstd)%clf,bar(xx,nn);hold on Ylimit=get(gca,YLim);yy=0:Ylimit(2);xxmu=xmu*size(yy);xxL=xxmu/xmu*(xmu-xstd);xxR=xxmu/xmu*(xmu+xstd);plot(xxmu,yy,r,Linewidth,3)%plot(xxL,yy,rx,MarkerSize,8)plot(xxR,yy,rx,MarkerSize,8),hold off(2)randn(seed,1),x=randn(1,100);exm070922_1(x);?Error using=plot Vectors must be the same lengths.Error in=D:Master6mfilebarzzy0.m On line 11 =plot(xxmu,yy,r,Linewidth,3)%Error in=D:Master6mfileexm070922_1.m On line 7 =barzzy0(nn,xx,xmu,xstd)%-3-2-10123051 01 52 02 5图7.9-3 (3)(4)(5)名师资料总结-精品资料欢迎下载-名师精心整理-第 15 页,共 25 页 -16 randn(seed,1),x=randn(1,100);exm070922_1(x);图 7.9-3 图 7.9-4 (7)图 7.9-5 (9)名师资料总结-精品资料欢迎下载-名师精心整理-第 16 页,共 25 页 -17 randn(seed,1),x=randn(1,100);exm070922_1(x);7.9.3 MATLAB程序的性能优化7.9.3.1 提高 MATLAB运行速度的有效措施7.9.3.2 JIT 和加速器的加速能力【例 7.9.3.2-1】试验 JIT 和加速器对M 文件的加速作用。7.9.3.3 程序性能的剖析【例 7.9.3.3-1】演示界面式剖析器的使用。本例被剖析文件relaxzzy.m 可从随书光盘的mfiles目录上得到。(1)图 7.9-6 (2)方法一:方法二:(3)名师资料总结-精品资料欢迎下载-名师精心整理-第 17 页,共 25 页 -18 图 7.9-7 名师资料总结-精品资料欢迎下载-名师精心整理-第 18 页,共 25 页 -19 图 7.9-87.10面向对象编程面向对象编程7.10.1概念综述概念综述7.10.1.1类和对象7.10.1.2面向对象编程的内涵名师资料总结-精品资料欢迎下载-名师精心整理-第 19 页,共 25 页 -20(1)创建类目录(2)选定待建类的数据结构(3)对象构造函数(4)显示函数(5)与其他类之间的转换函数(6)其他重载函数和重载运算7.10.2面向对象编程应用示例面向对象编程应用示例【例 7.10.2-1】本例演示:创建“先进先出”FIFO 队列 queue类的全过程。在本例中,读者应充分注意:构架域(Fields of a structure array)和定义在其上的方法函数(Method function)之间的关系。(1)(2)(3)queuequeue.m function q=queue(v)%QUEUEQUEUE%调用格式%superiorto(double,sparse,struct,cell,char,inline,sym);%if nargin1;error(Too many arguments.);end;if nargin=0%q.value=;q.name=;q=class(q,queue);elseif isa(v,queue);%q=v;%else%q.value=v;%q.name=inputname(1);if isempty(q.name)q.name=(class(v);end q=class(q,queue);%end(4)queuedisplay.m function display(q,ki,kj)%QUEUEDISPLAY%调用格式%if nargin=0;error(缺少输入宗量,即被显示对象!);end switch nargin 名师资料总结-精品资料欢迎下载-名师精心整理-第 20 页,共 25 页 -21 case 1m,n=size(q);vname=inputname(1);if isempty(vname)fprintf(ans=n);elseif fprintf(%s=n,vname);end;if isempty(q)fprintf(empty )%fprintf(%s,class(q)%fprintf(nn);%elseif m*n=1;fprintf(%s:,q.name);disp(q.value);fprintf(n);elsefprintf(%d*%d,m,n%fprintf(%s,class(q)%fprintf(nn);%end case 2disp(The content of,inputname(1),(,int2str(ki),)disp(is a,class(q(ki).value),object)fprintf(%s=n,q(ki).name);disp(q(ki).value);fprintf(n);case 3disp(The content of,inputname(1),(,int2str(ki),int2str(kj),)disp(is a,class(q(ki,kj).value),object)fprintf(%s=n,q(ki,kj).name);disp(q(ki,kj).value);fprintf(n);end(5)queueisempty.m function f=isempty(q)%QUEUEISEMPTY f=0;m,n=size(q);if m*n=1;if isempty(q.value)&isempty(q.name)%f=1;end;end;(6)queuecomein.m function q=comein(p,varargin)%QUEUECOMEIN%调用格式 名师资料总结-精品资料欢迎下载-名师精心整理-第 21 页,共 25 页 -22%if nargin2 error(comein needs at least two arguments.);end;if isa(p,queue)error(inputname(1),is not a queue);end;q0=p;qzzy=class(p);%for i=1:length(varargin)temp=varargini;s=eval(qzzy,(temp);%s.name=inputname(i+1);if isempty(s.name)s.name=(class(temp);end if isempty(q0)q0=s;else q0=q0 s;end end if nargout=0;assignin(caller,inputname(1),q0);evalin(caller,inputname(1);else q=q0;endqueuegoout.m function n,v,q=goout(p)%QUEUEGOOUT%调用格式%if nargin=0;error(No queue specifide.);end;if nargout3;error(Too many output arguments.);end;if nargin1 error(Too many input arguments.);end;if isa(p,queue);error(inputname(1),is not a queue.);end;if isempty(p)q1=p;else m,n=size(p);v1=p(1).value;n1=p(1).name;if m*n=1 q1=queue;else q1=p(2:end);end end 名师资料总结-精品资料欢迎下载-名师精心整理-第 22 页,共 25 页 -23 if nargout=1;v=v1;end;if nargout=2;n=n1;end;if nargout=3;q=q1;end;【例 7.10.2-2】本例的目的:一,检验例7.10.2-1 所编写的程序的正确性;二,演示所设计的新类是如何被运作的。(1)qe=Hello!你好!;Q=queue(qe)Q=qe:Hello!你好!(2)class(Q)isobject(Q)isa(Q,queue)ans=queue ans=1 ans=1(3)isempty(Q)ans=0【例 7.10.2-3】本例目的:一,演示“入队”、“离队”函数的调用方法;二,演示 queuedisplay显示队列具体元素细节的功能。(1)a=1,2,3;4,5,6;b1=This;b2=is;b3=a cell array;comein(Q,a,b)Q=1*3 queue (2)display(Q,2)The content of Q(2)is a double object a=1 2 3 4 5 6(3)nn,vv,QQ=goout(Q)nn=qe vv=Hello!你好!QQ=名师资料总结-精品资料欢迎下载-名师精心整理-第 23 页,共 25 页 -24 1*2 queue (4)display(QQ,1,2)The content of QQ(1,2)is a cell object b=This is a cell array【例 7.10.2-4】利用指令methods可以获知对任何类定义的(在类目录上的)所有方法函数。methods queue Methods for class queue:comein display goout isempty queue 7.10.3重载运算重载运算7.10.4继承性及其应用继承性及其应用7.10.4.1继承概念7.10.4.2class函数调用格式汇总7.10.4.3利用继承性创建子类的示例【例 7.10.4.3-1】把例 7.10.2-1 构成的队列作为父类,利用继承性,创建stack堆栈子类。(1)mkdir(d:matlab6p5work,stack)cd d:matlab6p5workstack(2)stackstack.m function ST=stack(v)%调用格式%if nargin1;error(Too many arguments.);end;if nargin=0 Q=queue;s.value=;s.name=;elseif isa(v,stack);s=v;Q=queue(evalin(caller,inputname(1);else s.value=v;s.name=inputname(1);if isempty(s.name)s.name=(class(v);名师资料总结-精品资料欢迎下载-名师精心整理-第 24 页,共 25 页 -25 end Q=queue(evalin(caller,inputname(1);end ST=class(s,stack,Q);【例 7.10.4.3-2】本例目的之一是:检查上例构造函数设计的正确性。目的之二是:观察堆栈关于队列的显示,类别判断和为“空”判断性质的继承。(1)AA=继承性 ;ST=stack(AA)ST=(char):继承性(2)class(ST)ans=stack(3)isa(ST,stack)isa(ST,queue)ans=1 ans=1(4)isempty(ST)ans=0【例 7.10.4.3-3】本例通过堆栈类对象的“压入”和“弹出”操作,进一步观察继承性。(1)BB=1:6;CC=sym(x2+4*x);comein(ST,BB,CC)ST=1*3 stack (2)显示堆栈中第三元素的内容display(ST,3)The content of ST(3)is a sym object CC=x2+4*x(3)从堆栈弹出元素Name1,Value1,ST_1=goout(ST)Name1=(char)Value1=继承性ST_1=1*2 stack 名师资料总结-精品资料欢迎下载-名师精心整理-第 25 页,共 25 页 -

    注意事项

    本文(2022年2022年精通matlab.版.M文件和面向对象编程 .pdf)为本站会员(C****o)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开