matlab课程设计报告用Mtlab编程实现句柄图形应用.doc
课程设计报告(论文)课 程:基于Matlab的数学实验 学 号: 068318137 姓 名: 田 甜 班 级: 06 信计 任课教师: 吴 钢 徐州师范大学数学科学学院用Mtlab编程实现句柄图形应用田甜 068318137(徐州师范大学 科文学院 徐州 221116)摘要: 本文利用Mtlab的算法设计和程序设计的原理和方法,着重介绍了句柄图形的实际运用.根据提出的实际问题,即画出沿曲线移动的小球,给出具体句柄图形的定义,主要图形对象,以及各对象之间的层次关系;并利用句柄访问,修改图形对象的属性.关键字: Matlab编程; 句柄图形; 算法实现; 沿曲线移动的小球;引言MATLAB是一种以数值计算和数据图示为主的计算机软件,包括MATLAB主程序、SIMULINK 动态系统仿真包和各种专业工具箱.它基于矩阵运算,集数值计算、图形显示、图形界面设计等功能和模糊逻辑等30多个专业工具箱于一体,具有极强大的计算功能和极高的编程效率,特别适合于科学计算、数值分析、系统仿真和信号处理等任务,对后续专业课程的学习有重要影响. 在Matlab系统中,绘图命令产生的每一个部分称为图形对象,系统在创建每一个对象时,都为该对象分配唯一的一个值,称其为句柄,因此句柄就是图形对象标识符.对象、句柄以及图形对象等概念其实质是统一的,系统将每一个对象按树型层次结构组织起来,这些对象包括根对象,通常为计算机屏幕、图形窗口、坐标系统、线条、曲面、文本串、用户界面控制等.根对象可包含一个或多个图形窗口对象,而一个图形窗口对象又可包含一组或多组坐标系子对象,线条、文本等其它对象都是坐标系的子对象.所有创建对象的函数当父对象不存在时,都会自动创建它.一、 句柄计算机屏幕作为根对象自动建立,其句柄值为0.如Hf_f=figure命令则建立图形窗口对象,并返回它的句柄值给变量Hf_f.图形窗口的句柄为一整数,并显示在该窗口的标题栏,其它图形对象的句柄为浮点数,Matlab提供了一系列与句柄操作有关的函数,如gcf 、gca等.为便于识别,用大写字母开头的变量表示句柄,如Hf_f等.二、 对象属性所有图形对象都具有控制对象显示的属性.这些属性既包括对象的一般信息,如对象类型、对象的父对象及子对象等,也包括对象的一些特定信息,如坐标系对象的刻度等.用户可以获取、设置对象属性,以达到控制对象的目的.当创建一个对象时,系统用一组默认属性值定制对象,用户可以通过命令获取这些属性值,同时也可通过set命令重新设置对象属性.set命令格式为:set(H,name,value,) 将图形对象H的name属性设置为value.其中H为句柄,name为属性名,value为name的属性值.用set命令可以方便地设置图形对象属性,如下列程序段就是通过属性来定制图形.x=0:0.1:4*pi;H=plot(x,sin(x); /返回正弦曲线句柄Hset(H,'LineStyle','*','LineWidth',0.1); /设置正弦曲线线型与线宽其中'LineStyle'为线型属性,'LineWidth'为线宽属性.利用get(H)命令可以返回当前句柄H对象的属性.键入命令:get(H) 系统返回当前图形对象的有关属性:例:H=get(0,CurrentFigure) 则返回根对象的CurrentFigure的属性值,即当前图形窗口的句柄,相当于函数gcf.get(gcf,Children)则返回当前坐标系对象的句柄.三、 句柄应用利用句柄操作的有关函数,用户可以查找、访问图形对象,以达到定制对象属性,改变对象显示效果的目的.x=-pi:pi/20:pi;y=sin(x);z=cos(x);plot(x,y,'r',x,z,'g');Hl_lines=get(gca,'Children'); /获取正、余曲线句柄向量Hl_linesfor k=1:size(Hl_lines) if get(Hl_lines(k),Color)=0 1 0 / 0 1 0为绿颜色向量Hl_green=Hl_li /返回绿色线条句柄 endend四、 综合运用用matlab编程画出沿曲线移动的小球Matlab源程序:h0=figure('toolbar','none',. 'position',198 56 408 468,. 'name','运行的图形');h1=axes('parent',h0,. 'position',0.15 0.45 0.7 0.5,. 'visible','on');t=0:pi/24:4*pi;y=sin(t);plot(t,y,'b')n=length(t);h=line('color',0 0.5 0.5,. 'marker','.',. 'markersize',25,. 'erasemode','xor');k1=uicontrol('parent',h0,. 'style','pushbutton',. 'position',80 100 50 30,. 'string','开始',. 'callback',. 'i=1;',. 'k=1;,',. 'm=0;,',. 'while 1,',. 'if k=0,',. 'break,',. 'end,',. 'if k=0,',. 'set(h,''xdata'',t(i),''ydata'',y(i),',. 'drawnow;,',. 'i=i+1;,',. 'if i>n,',. 'm=m+1;,',. 'i=1;,',. 'end,',. 'end,',. 'end');k2=uicontrol('parent',h0,. 'style','pushbutton',. 'position',180 100 50 30,. 'string','停止',. 'callback',. 'k=0;,',. 'set(e1,''string'',m),',. 'p=get(h,''xdata'');,',. 'q=get(h,''ydata'');,',. 'set(e2,''string'',p);,',. 'set(e3,''string'',q)');k3=uicontrol('parent',h0,. 'style','pushbutton',. 'position',280 100 50 30,. 'string','关闭',. 'callback','close');e1=uicontrol('parent',h0,. 'style','edit',. 'position',60 30 60 20);t1=uicontrol('parent',h0,. 'style','text',. 'string','循环次数',. 'position',60 50 60 20);e2=uicontrol('parent',h0,. 'style','edit',. 'position',180 30 50 20);t2=uicontrol('parent',h0,. 'style','text',. 'string','终点的X坐标值',. 'position',155 50 100 20);e3=uicontrol('parent',h0,. 'style','edit',. 'position',300 30 50 20);t3=uicontrol('parent',h0,. 'style','text',. 'string','终点的Y坐标值',. 'position',275 50 100 20);运行图形:(1)初始图形:(2)、点击“开始”,小球沿曲线循环运动,再点击“停止”后图形:五、 结论由于使用Matlab编程运算与人进行科学计算的思路和表达方式完全一致,所以不象学习其它高级语言-如Basic、Fortran和C等那样难于掌握,用Matlab编写程序犹如在演算纸上排列出公式与求解问题。 MATLAB 的图形可视能力很强。 MATLAB 的图形系统有高层和低层两个部分组成。高层指令友善、简便;低层指令细腻、丰富、灵活。一般说来,不管二元函数多么复杂,就能得到富于感染力的表现。数据和函数的图形可视手段包括:线的勾画、色图使用、浓谈处理、视角选择、透视和裁剪。 MATLAB 有比较完备的图形标识指令,它们可标注:图名、轴名、解释文字和绘画图例。六、 参考文献(1)、MATLAB语言及其在电子信息工程中的应用 王洪元主编 清华大学出版社(2)、基于MATLAB的数学实验 胡守信,李柏年编著 科学出版社(3)、MATLAB6实例教程 郝红伟 中国电力出版社(4)、Matlab 工程计算及应用 李丽,王振领编著 人民邮电出版社(5)、计算方法:算法设计及其MATLAB实现 王能超 高等教育出版社