高等理科教育2005年第6期(总第64期)Matlab作图函数的总结与分析+黄琼湘那斯尔江·吐尔逊(tfi疆大学数学与系统科学学院,新疆乌鲁木齐830046)摘要Matlab(MATrixLABoratory的简称)是CleverMoler博士用Fortran语言开发的科学计算工具。
它已成为科学研究、工程计算、应用开发的重要工具。
国外已将它作为理工科大学的必修课程,国内各大学也开始开设这门课程。
Matlab有强大的作图功能,有兴趣的读者可参考文献【卜4’。
本文对Matlab的作图函数进行分析和总结,以供教学参考和学生学习之用。
关键词Matlab数据可视化作图函数中图分类号G642.0文献标识码A一、Matl如作图函数的总结Matlab提供了丰富的作图函数,有100个之多。
在教学和学习中显得有点杂乱。
我们先对它们进行总结和分类,并提炼出它们的共性和特性。
Matlab的作图函数从视角的维数上分有三类:一维作图函数、二维作图函数和三维作图函数。
它们的代表分别是line、plot和plot3等函数。
从类型上分大致有四类:通用作图函数(如plot函数等);专业作图函数(如contour函数、quiver函数等);动画制作函数(如movie、comet3等函数);图形修饰函数(如view等函数)。
Matlab所有的作图函数都可以通过查帮助获得它的功能和用法。
这里我们把作图函数按类型分类,列出一些主要和常用的作图函数(见表1),以抓住重点。
作图函数虽然功能不同,但它们的调用格式是一致的。
我们用GraphF来表示一般的作图函数,它们的调用格式如下:1.GraphF(X,Y,S)这是一、二维函数的作图格式。
x和Y表示图形的数据点,s表示图形修饰参数组(可以缺省)。
当x,Y都是顶点坐标时,GraphF(X,Y,S)画出以x,Y为端点,s为参数的线;当x是一组顶点坐标,而Y对应于X的函数值时,GraphF(X,Y,S)画出函数Y的二维图形。
2.GraphF(X,Y,Z,S)这是三维函数的作图格式。
z是x和Y的函数。
x,Y以二维坐标形式表示函数值z的作图区域D,s表示图形修饰参数组(可以缺省)。
GraphF(x,Y,Z,S)画出定义域为D的函数z的三维图形。
值得注意的是,Matlab的作图函数总是描绘数据点(X,Y)(在平面上)或(x,Y,z)(在空间中)的图形。
前者视为Y的函数,而后者视为z的函数。
函数GraphF在作图前数据点必须事先给定,在作图时函数GraphF将各数据点用光滑的曲线连接成图形。
另外,X,Y,Z还÷收稿日期2004—02—19资助项目新疆大学校基金“应用软件程序设计”重点课程建设项目资助作者简介黄琼湘(1958)男,湖南衡阳人,教授,主要从事组合数学与图论、计算机算法研究高等理科教育Maflab作图函数的总结与分析可以是矩阵。
当x,Y,z是矩阵时,它们的列数必须相同。
此时GraphF函数按x,Y,z矩阵的各列画出一组图形(绘制的图形个数等于矩阵的列数)。
以上是对静态图形的做法进行的归纳和总结。
动态图形的制作,原则上是将静态图形连续播放出来。
图形的修饰与标注除了Matlab自备的函数可用外,还可引入Tex格式。
由于篇幅这里都不作讨论。
表lMatlab作图函数的分类以及函数举倒编号函数分类函数举例函数含义Plot直角坐标下线性刻度曲线Plotyy双纵坐标图Polar极坐标曲线图l通用作图函数Plot3三维直角坐标曲线图Surf三维表面图Mesh三维网线图Bar直方图Stairs阶梯形曲线图2专业作图函数Contour等高线图HⅡ多边形填色图Fplot函数曲线图C,etframe获得影片动画图像的帧lm2{rame将编址图像转换为影片动画3动画制作函数Movie播放影片动画Comet彗星状轨迹图View设定3一D图形观测点Gtext用鼠标在图上标注文字4图形修饰函数Lcg∞a图例说明Axis轴的刻度和表现Light灯光控制二、Matlah作图函数的分析Matlab的作图函数大多是以M函数的形式编写的,通过查阅这些M函数的帮助信息可以学习它们的用法。
用M一文件编辑器打开它,可以阅读它的源代码,从中学习编程方法。
然而,有一部分作图函数是系统的内装函数,它们经过编译处理,其源代码是不可读的。
这些内装函数处在M一作图函数的底层,M一作图函数本质上是通过调用这些内装函数来作图的。
以下我们先分析山峰作图函数(peaks)。
1.peaks是一个M一函数。
它可以用编辑命令打开:editpeaks。
2.程序说明:我们把它分成了两段。
第一段是注解段,用“%”号标识,在命令窗口输入:helppeaks时,显示该段帮助信息。
第二段是代码段,我们用(1)~(28)对它进行了标注,以便分析程序。
3.程序分析。
(1)peaks函数共有11种调用格式,如原函数注释中所述。
(2)在以上程序流程图中,详细分析了8种调用方式,另外4种留给读者完成。
(3)nargin,nargout是通用程序的预定义变量,分别用来记录函数的输入参数个数和输出参数个数。
它们是由函数的调用格式确定的,并且可被系统自动标识。
(4)argl,ar92….是通用程序的预定义变量,argn表示第n高等理科教育2005年第6期(总第64期)个输入量的值。
它们是由函数的调用格式确定的,并且可被系统自动标识。
(5)程序中的函数图形由第(24)条语句surf(x,Y,Z)作出。
(6)程序输出的作图数据,由第(3),(6),(8),(11),(13),(is),(17)条语句根据不同情况输出。
(7)注意length(X)函数是测量x的维数而不是位数。
(8)当输入peaks(1)时,程序执行到第(6)句,分母为零出错。
从以上对peaks函数的分析可知:peaks函数是通过surf函数作图的。
打开surf函数后,经分析得知surf函数是通过surface函数作图的(由于篇幅我们省去对surf函数的分析)。
而surface函数是一个经过编译的内装函数,它不可读。
常用的作图函数plot()也是一个内装函数。
我们可以利用plot()函数编写用户自己的M一函数,开发出新的作图函数,这就像利用surface函数开发surf函数和peaks函数一样。
总之,Matlab的作图函数按它们的层次关系又可分为两类,一类是它自带的内装作图函数,它们处在作图函数的底层,经过编译不可读。
一类是用户编写的M一作图函数,它的源代码可读,通过调用内装作图函数作图。
三、Matlab作图函数的应用举例对应于第一节的作图函数的格式,这里我们举几个简单的例子(它们都g_k3zt调试,可直接运行)。
例1.作(1,2),(5,8)两点的连线line([1,5],[2,8])%用line函数作(1,2),(5,8)两点的连线plot([1,5],[2,8])%用plot函数作(1,2),(5,8)两点的连线,缺省线的修饰plot([1,5],[2,8],’r’)%用plot函数作(1,2),(5。
8)两点的连线,用红色画线plot3([1,2],[5,2],[5,9],’Color7,7r’,7LineWidth’,5)%画三维空同中的直线,并对线进行修饰例2.画二维曲线,并对线进行修饰(代码可以运行,图略)elfreset,x=0:pi/12:2‘pi;PNl={7C010r7,7LineWidth7,’Marker,}.%设置属性名元胞数组PVl={[100],5,~d};%设置属性值plot(sin(X),COS(x),PNl,PVl)%根据属性值画图axissquarePS.Color=F0.70.70];PS.LineWidth=2;%用构架数组设置属性名和属性值line(sin(7。
x),COS(7+X),PS);%根据属性值画图例3.画三维螺旋曲线,并对线进行修饰(代码可以运行,图略)r=0:0.1:10”pi:a=0:0.1:10“pi:x=r.‘sin(a);y=r.’cos(a);z=0:0.1:10”piplot3(x,Y,z)例4.用surf(x,Y,Z,’s’)绘制3维曲面图形(代码可以运行,图略)elf,x=一4:4;y=x;[x,Y]=meshgrid(X,Y);%作网格点Z=X.-2+Y.‘2:surf(X,Y,Z);%surf作图(下转第48页)高等理科教育2005年第6期(总第64期)就十分注意创新思维的形成和创新意识的培养,使学生能将学习化学理论知识、掌握实验技能与研究问题相结合;(3)新考试方案有利于培养学生的钻研精神,有利于培养和提高学生的科研素质,使他们由过去的“学习、考试”型学生向“学习、思考、研究、创新”型学生转变;(4)新考试方案对学生成绩能给出合理的区分度,有利于发现和培养一批优秀学生;(5)新考试方案充分体现了学生知识、能力和素质协调发展的培养要求,对于推动高校学生素质教育和创新人才的培养具有重要作用。
我们在化学学院1996至2001级各专业的“现代化学实验与技术”课程的考核中按以上新的考试方案进行,取得了良好的效果。
例如,在97级的116位同学中,考试成绩不及格的有11人,其中9人参加了口试,均获通过;1人必须重修,另1人因多方面原因而退学。
参加“开放式、研究性”实验的共42人(其中包括基地班35人,非基地班7人)。
这些同学各自提交了实验报告,各小组提交了综合性研究报告,全体同学以组为单位进行“‘开放式、研究性’实验交流(答辩)会”,经受了锻炼,都取得了优良成绩。
在98级该课程的教学中,新开设了8个研究性实验,并实施了开放式实验教学。
共有41名同学参加了这类实验,其中有7人获得1~3分的奖励分。
在98级的122位同学中,笔试不及格的有15人,他们均参加了口试,其中2人还参加了实验操作考试,有14人获得通过,另1人需重修本课程。
在实验课考试结束后,我们每年都对本课程的教学运行情况进行了调查。
其中,学生对本课程的上述考试方案给予了积极评价。
学生在调查问卷中写道:“这种考试形式新颖独特、很好”、“这次考试考出了真本事,觉得自己以前学习太死板、不灵活”、“开卷考试有创意”等等。
参考文献:[1]张仁俊,童叶翔,陈六平.构建。
一体化、多层次、开放式”创新化学实验教学体系的探索[A].选自:林明河主编,实验教学改革与探索(三)[c].广州:中山大学出版社,2002.26—30.[2]陈六平,古喜兰,制、岚,等.实施开放式实验教学,培养创新化学人才[A].选自:中山大学教务处编,教学研究与实践[C].广州:中山大学出版社,2002.20—27,(上接第42页)holdOneolormap(c001)stem3(X,Y,Z,71"07)四、体会%没有holdon行不行7%给曲面上冷色%stem画杆点在教学过程中,我们有以下几点体会供读者参考:(1)将Matlab的作图函数分类,以便了解各种作图函数的功能、抓住重点;(2)给出作图函数的总体调用格式,以便学者掌握作图函数的调用方法;(3)重点掌握几个典型的内装作图函数,如Plot、surface等,以便编写功能更强大的自定义作图函数;(4)论文撰写时,使用Matlab的NoteBook功能,可以在MicrosoftWord中直接输入Matlab命令并运行得到所需要的实验图形,如例2~例4中给出的图形(略)。