《MATLAB在二维绘图中的应用精品资料.doc》由会员分享,可在线阅读,更多相关《MATLAB在二维绘图中的应用精品资料.doc(28页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、MATLAB语言课程论文MATLAB在二维绘图中的应用 姓 名:郭露 学 号:12012241985 专 业:电气工程与自动化 班 级:12级电气1班 指导老师:李虹 学 院:物理电气信息学院 完成日期:2013年12月10日 MATLAB在二维绘图中的应用 (姓名:郭露 12012241985 12级电气1班)【摘要】 二维图形是将平面坐标上的数据点连接起来的平面图形。可以采用不同的坐标系,如直角坐标、对数坐标、极坐标等。二维图形的绘制是其他绘图操作的基础。强大的绘图功能是MATLAB的特点之一。MATLAB提供了一系列的绘图函数,用户不仅不许考虑绘图细节,只需给出一些基本的参数就能得到所需
2、要的图形,这一类函数称为高层绘图函数。除此之外,MATLAB还提供了直接对句柄进行操作的一系列的低层的绘图操作。这类操作将图形的每个元素(如坐标轴、曲线、文字等)看做是一个独立的对象,系统给每个对象独立的分配一个句柄,以后可以通过该句柄对改图元素进行操作,而不影响图形的其他部分。高层绘图操作简单明了,方便高效,使用户最常使用的绘图方法,而低层绘图操作控制和表现图形的能力更强,为用户自主绘图创造了条件。其实MATLAB的高层绘图函数都是利用低层绘图函数建立起来的。所以MATLAB的计算准确、效率高、使用快捷等优点常被广泛应用于科学和工程领域.【关键字】 MATLAB语言 二维绘图 图像处理【引言
3、】 MATLAB语言是当前国际学科界应用很广泛的一种软件,强大的绘图功能是MATLAB的特点之一。MATLAB提供了一系列的绘图函数,利用它强大的图像处理来绘制二维图形既简单而且也很方便。在绘制二维图形的过程中也用到了MATLAB语言的其他功能,比如说它提供的一些函数,利用这些函数可以方便的生成一些特殊矩阵,因此可生成一个坐标平面。MATLAB语言强大的功能也在二维绘图中的得到了很广泛的应用,利用它所提供的精细的图像处理功能还可以对所绘制的二维图形作一个修饰的处理。MATLAB语言具有强大的以图形化显示矩阵和数组的能力,同时它给这些图形增加注释并且可以对图形进行标注和打印。MATLAB的图形技
4、术包括二维的可视化、图形处理、动画等高层次的专业图形的高级绘图,例如图形的光照处理、色度处理以及四维数据的表现等。那么,如何把它强大的功能应用于实际应用中,下面我们将用实例说明。 【正文】一、 MATLAB的主要功能及特点 MATLAB近几年广泛用于图像处理和识别, 使用MATLAB设计模式识别应用软件将使设计者获得更大的自由, 可以任意执行特殊的算法和实现复杂的操作,MATLAB之所以成为世界顶级的科学计算与数学应用软件, 是因为它随着版本的升级与不断完善而具有愈来愈强大的功能。(1)数值计算功能。(2)符号计算功能。(3)数据分析功能。(4)动态仿真功能。(5)图形文字统一处理功能。 MA
5、TLAB 有三大特点:一是功能强大。主要包括数值计算和符号计算、计算结果和编程可视化、数学和文字统一处理、离线和在线计算。二是界面友好,编程效率高。MATLAB 是一种以矩阵为基本单元的可视化程序设计语言, 语法结构简单, 数据类型单一,指令表达与标准教科书的数学表达式相近。三是开放性强。MATLAB 有很好的可扩充性, 可以把它当成一种更高级的语言去使用。使用它很容易编写各种通用或专用应用程序。二 MATLAB在二维绘图中的具体应用1.常用的绘图函数1plot函数的基本用法 plot函数用于绘制二维平面上的线性坐标曲线图,要提供一组x坐标和对应的y坐标,可以绘制分别以x和y为横、纵坐标的二维
6、曲线。plot函数的应用格式plot(x,y)其中x,y为长度相同的向量,存储x坐标和y坐标。2 含多个输入参数的plot函数 plot函数可以包含若干组向量对,每一组可以绘制出一条曲线。含多个输入参数的plot函数调用格式为:plot(x1,y1,x2,y2,xn,yn)当输入参数有矩阵形式时,配对的x,y按对应的列元素为横坐标和纵坐标绘制曲线,曲线条数等于矩阵的列数。例1作出函数的图形,并观测它们的周期性。先作函数在上的图形,用MATLAB作图的程序代码为:x=linspace(-4*pi,4*pi,300); %产生300维向量xy=sin(x); %正玄函数plot(x,y) %二维图
7、形绘图命令结果如图1所示此图也可用fplot命令,相应的MATLAB程序代码为:clear; close; %clear清理内存;close关闭已有口。fplot(sin(x),-4*pi,4*pi) %绘制正玄图形结果如图2所示 图1 的图形 图2 的图形2.fill将资料点视为多边行顶点,并将此多边行涂上颜色: x=linspace(0,10,50); y=sin(x).*exp(-x/3); fill(x,y,b); % b为蓝色 3.feather将每一个资料点视复数,并以箭号画出: theta=linspace(0, 2*pi, 20); z = cos(theta)+i*sin(t
8、heta); feather(z); 2. 二维图形的修饰由前面的图1至2可以看出,当利用plot命令绘图时,虽然运用起来比较简单,但它所自动产生的图形却显得有些简单,未能产生特殊的效果。为此MATLAB提供了一些图形函数,专门对由plot命令所画出的图形进行进一步的修饰,以使其更加美观、更便于应用。如坐标轴范围的设定(axis命令)、加坐标轴名称(xlabel、ylabel命令)、加网络(grid命令)、加图形加图题(title命令)、对图形进行文字注释(text命令)等。1.用不同的线型及颜色加以绘制。x=-2*pi:2*pi/30:2*pi; %产生向量xy1=sin(x); y2=co
9、s(x); %正余玄函数plot(x,y1,x,y2,gp) % gp表示绘出的图形是绿色五角星线结果如图4 图4不同线型与颜色绘制的正余玄图形2.坐标轴的调整 MATLAB可以自动根据曲线数据的范围选择合适的坐标系,从而使得曲线能够尽可能清晰地显示出来,所以在一般情况下用户不必去进行坐标系的选择。但是,如果用户对MATLAB所自动生成的坐标轴不太满意的话,则可以利用axis所要绘制出的图形的坐标轴进行调整。axis命令的功能非常丰富,按常用用法有如下4类 调整坐标轴的范围;调整坐标轴的状态;保存调整坐标轴的范围;保存坐标轴的状态。3.设置图形标题 MATLAB中有专门的函数title来为图形
10、添加标题,调用这种函数的格式是: (1)title(string) 设置当前绘图区的标题为字符串string的值。 (2)title(.,PropertyName,PropertyValue,.) 可以在添加或设置标题的同时,设置标题的属性,如字体、颜色、加粗等。例2图形标注函数title使用实例。利用title函数为图形添加标题。解:在命令窗口输入下面的代码x=0:0.05:10;y=exp(-0.2*x).*cos(x);plot(x,y)title(ite0.2xcos(x),FontWeight,Bold)执行程序后,可以得到2-18所示结果图形:4.在图形中显示文字 MATLAB允许
11、用户在图形的任意位置加注一串文字。加注文字的时候,MATLAB提供了两种不同确定文字位置的操作方式:(1)用坐标轴确定文字位置;(2)用鼠标确定文字位置。 MATLAB允许用户在图形窗口的任意位置用低级命令书写一串字符。该方式的格式是text(x,y,string,option),主要功能是在图形指定坐标位置(x,y)处,写出由string所给出的字符串。坐标(x,y)的单位是由选项参数option决定的。 如果不给出该选项参数,则(x,y)坐标的单位与图中的单位是一致的。如果选项参数取为sc,则(x,y)坐标表示规范化的窗口相对坐标,其变化范围为01,即该窗口绘图范围的左下角坐标为(0,0)
12、,右上角坐标为(1,1)。 例3坐标轴标注函数text使用实例。利用text函数在y=sinx指定位置添加文字。解:在命令窗口输入以下代码x=0:pi/100:2*pi;y=sin(x);plot(x,y)axis(02*pi-1.51.5)line(0,2*pi,0,0)text(0.5,0.85,sin(x)sc)text(0.5*pi,0.5,position)text(1.5*pi,-0.5,negative)3.手工绘图方式 手工绘图的关键在于如何选取绘图时的一些关键数据点,如何将这些数据点的坐标值读入变量,然后加以利用。MATLAB提供了用鼠标选取数据点的命令ginput,当在图形
13、窗口中的某一位置按下某个鼠标键(或键盘上除回车之外的任何键)时,ginput将返回该位置的坐标值。x,y=ginputx,y=ginput(n)x,y,button=ginput(n)(1)利用x,y=ginput,当在图形窗口中按下某个鼠标键或某一键盘键时,读取此时鼠标所在位置的一系列坐标值,并将这些坐标值存储到向量x和y中,直到按回车键后才中止该读书过程。(2)利用命令x,y=ginput(n),当在图形窗口中按下某一个鼠标键或某一键盘键时,读取此时鼠标所在位置的一系列坐标值,并将这些坐标值存储到向量x和y中,总共读取n个数据点。(3)命令x,y,button=ginput(n)也可利用鼠
14、标从图形窗口中读取n个数据点,并将这些数据点的坐标值存储到向量x和y中,同时还将读数过程中鼠标的按键情况或键盘的按键情况记录到向量变量button中。在这里需要说明以下问题:l在读取第i个数据点时,若按的是鼠标左键,则button(i)=1;若按的是鼠标中键,则button(i)2;若按的是鼠标右键,则button(i)=3;若按的是键盘键,则button(i)存储相应键的ASC。l该命令仅仅只是读取了一些数据点,并没有绘制图形。在读取了一些数据点后,我们就可以利用某种方法或按某种或图要求把这些数据点连成一起,从而达到手工绘图的效果。三、结论由上面二维制图我们不难得出以下结论:在matlab中
15、,最基本且应用最为广泛的绘图函数为plot函数,利用它可以在二维平面上绘制出不同的曲线。Plot函数用于绘制xy平面上的线性坐标曲线图需要提供一组x坐标及其各点对应的y坐标,这样就可以绘制出分别以x,y为横纵坐标的二维曲线。 Matlab还提供了一些绘图选项,用于确定所绘曲线的线性,颜色和数据点标记符号,它们可以组合使用。数据点可以用向量或矩阵的形式给出,类型可以是实型或复型,在取数据点时一般都是等间隔采样,这对绘制高频率变化的函数不够精确,为提高精度,绘制出比较真实的函数曲线,就不能等间隔取样,而必须在变化率大的区段密集采样,以充分反映函数的变化规律,进而提高图形的真实性。Fplot函数可自
16、适应的对函数进行采样能更好地反映函数变化规律。在matlab中如果需要绘制出具有不同坐标标度的两个图形,可以使用plotyy函数。这种图形能把函数值具有不同量纲,不同数量级的两个函数绘制在同一坐标中,有利于图形数据的对比分析。同时利用MATLAB语言强大的绘图功能可以精确的绘制出一系列的三维图像。MATLAB提供了一系列的绘图函数,用户不仅不许考虑绘图细节,只需给出一些基本的参数就能得到所需要的图形,这一类函数称为高层绘图函数。除此之外,MATLAB还提供了直接对句柄进行操作的一系列的低层的绘图操作。这类操作将图形的每个元素看做是一个独立的对象,系统给每个对象独立的分配一个句柄,以后可以通过该
17、句柄对改图元素进行操作,而不影响图形的其他部分。高层绘图操作简单明了,方便高效,使用户最常使用的绘图方法,而低层绘图操作控制和表现图形的能力更强,为用户自主绘图创造了条件。其实MATLAB的高层绘图函数都是利用低层绘图函数建立起来的。MATLAB在绘制图形方面更进一步的体现出了它强大的绘图功能。四学习心得 Matlab和其它语言不一样,如果抱着把其他语言的思想运用在Matlab里面的话,即使程序运行不出错,也很难把握Matlab的精髓,也就很难发挥Matlab的作用。在接触matlab之后,我发现matlab语法简单,易于绘制图形,编程也非常容易。Matlab是功能强大的科学及工程计算软件,它
18、不但具有矩阵计算为基础的强大数学计算和分析功能,而且还具有丰富的可视化图形表现功能和方便的程序设计能力。Matlab的应用领域极为广泛,除数学计算和分析外,还被广泛用于自动控制、系统仿真、数字信号处理、图形图像分析、数理统计、人工智能、虚拟现实技术、通信工程、金融系统等领域。 为了提高程序运行效率,能使用矩阵方法处理的数据尽量用矩阵方法处理,毕竟矩阵处理是Matlab的强项。 某些不能用矩阵处理,可设法构造出可以运算的矩阵。当不是很确定某个函数的用法和功能时,除了使用help或demo外,更方便更直接的方法就是自己构造一些简单数据试用一下函数。当使用矩阵运算时,直接看代码不是很容易理解,可把矩
19、阵简单的写在草稿纸上,包括初始矩阵和矩阵的变换结果,然后借助草稿纸上直观的矩阵运算理解整个表达式的意义。设置断点。设置断点最主要的目的就是查看中间变量的值,从中了解整个程序的运算过程。最主要也是最基本的就是对算法的正确理解,理解算法的原理和算法每一步的意义;当理解每一步的意义后,同样的目的可采用不同的方法进行处理。有时可以通过画图来帮助感性的了解数据,这样处理的时候不会太盲目。画图是Matlab又一强项。MATLAB所具有的强大的功能可以使我们解决很多用其他计算机语言不容易解决的问题。MATLAB提供了一系列的绘图函数,用户不仅不许考虑绘图细节,只需给出一些基本的参数就能得到所需要的图形,这一
20、类函数称为高层绘图函数,这学期学习让我感受颇多,这门语言相对于其他计算机语言而言不仅简单易操作而且它还具备强大的功能,不管你做什么设计只要牵涉到编程,它总会提供一些函数给我们供我们应用。这是我在学习的过程中的一些技巧。参考文献1 刘卫国.MATLAB程序设计与应用(第二版)M.北京:高等教育出版社,2006.2 陈婀妍.用MATLAB绘制二维函数图形.M.时代人物2008年03期.3张志涌.MATLAB教程R2012 北京航空航天大学出版社. 4高展宏.基于MATLAB的图像处理案例教程.21世纪高等学校规划教材出版社5周开利,邓春晖.MATLAB基础及其应用教程.北京大学出版社,2007.6
21、穆尔(美),高回生,刘同娜,李聪聪.MATLAB实用教程(第二版).附录资料:MATLAB的30个方法1 内部常数pi 圆周率 exp(1)自然对数的底数ei 或j 虚数单位Inf或 inf 无穷大 2 数学运算符a+b 加法a-b减法a*b矩阵乘法a.*b数组乘法a/b矩阵右除ab矩阵左除a./b数组右除a.b数组左除ab 矩阵乘方a.b数组乘方-a负号 共轭转置.一般转置3 关系运算符=等于大于=大于或等于=不等于4 常用内部数学函数 指数函数exp(x)以e为底数对数函数log(x)自然对数,即以e为底数的对数log10(x)常用对数,即以10为底数的对数log2(x)以2为底数的x的对
22、数开方函数sqrt(x)表示x的算术平方根绝对值函数abs(x)表示实数的绝对值以及复数的模三角函数(自变量的单位为弧度)sin(x)正弦函数cos(x)余弦函数tan(x)正切函数cot(x)余切函数sec(x)正割函数csc(x)余割函数反三角函数 asin(x)反正弦函数acos(x)反余弦函数atan(x)反正切函数acot(x)反余切函数asec(x)反正割函数acsc(x)反余割函数双曲函数 sinh(x)双曲正弦函数cosh(x)双曲余弦函数tanh(x)双曲正切函数coth(x)双曲余切函数sech(x)双曲正割函数csch(x)双曲余割函数反双曲函数 asinh(x)反双曲正
23、弦函数acosh(x)反双曲余弦函数atanh(x)反双曲正切函数acoth(x)反双曲余切函数asech(x)反双曲正割函数acsch(x)反双曲余割函数求角度函数atan2(y,x)以坐标原点为顶点,x轴正半轴为始边,从原点到点(x,y)的射线为终边的角,其单位为弧度,范围为( , 数论函数gcd(a,b)两个整数的最大公约数lcm(a,b)两个整数的最小公倍数排列组合函数factorial(n)阶乘函数,表示n的阶乘 复数函数 real(z)实部函数imag(z)虚部函数abs(z)求复数z的模angle(z)求复数z的辐角,其范围是( , conj(z)求复数z的共轭复数求整函数与截尾
24、函数ceil(x)表示大于或等于实数x的最小整数floor(x)表示小于或等于实数x的最大整数round(x)最接近x的整数最大、最小函数max(a,b,c,)求最大数min(a,b,c,)求最小数符号函数 sign(x)5 自定义函数-调用时:“返回值列=M文件名(参数列)”function 返回变量=函数名(输入变量) 注释说明语句段(此部分可有可无)函数体语句 6进行函数的复合运算compose(f,g) 返回值为f(g(y)compose(f,g,z) 返回值为f(g(z)compose(f,g,x,.z) 返回值为f(g(z)compose(f,g,x,y,z) 返回值为f(g(z)
25、7 因式分解syms 表达式中包含的变量 factor(表达式) 8 代数式展开syms 表达式中包含的变量 expand(表达式)9 合并同类项syms 表达式中包含的变量 collect(表达式,指定的变量)10 进行数学式化简syms 表达式中包含的变量 simplify(表达式)11 进行变量替换syms 表达式和代换式中包含的所有变量 subs(表达式,要替换的变量或式子,代换式)12 进行数学式的转换调用Maple中数学式的转换命令,调用格式如下:maple(Maple的数学式转换命令) 即:maple(convert(表达式,form)将表达式转换成form的表示方式 maple
26、(convert(表达式,form, x) 指定变量为x,将依赖于变量x的函数转换成form的表示方式(此指令仅对form为exp与sincos的转换式有用) 13 解方程solve(方程,变元) 注:方程的等号用普通的等号: = 14 解不等式调用maple中解不等式的命令即可,调用形式如下: maple(maple中解不等式的命令)具体说,包括以下五种:maple( solve(不等式)) maple( solve(不等式,变元) ) maple( solve(不等式,变元) ) maple( solve(不等式,变元) ) maple( solve(不等式,变元) )15 解不等式组调用
27、maple中解不等式组的命令即可,调用形式如下: maple(maple中解不等式组的命令) 即:maple( solve(不等式组,变元组) )16 画图方法:先产生横坐标的取值和相应的纵坐标的取值,然后执行命令: plot(x,y) 方法2:fplot(f(x),xmin,xmax) fplot(f(x),xmin,xmax,ymin,ymax) 方法3:ezplot(f(x) ezplot(f(x) ,xmin,xmax) ezplot(f(x) ,xmin,xmax,ymin,ymax) 17 求极限(1)极限:syms x limit(f(x), x, a) (2)单侧极限:左极限:
28、syms x limit(f(x), x, a,left)右极限:syms x limit(f(x), x, a,right) 18 求导数diff(f(x) diff(f(x),x) 或者:syms x diff(f(x) syms x diff(f(x), x) 19 求高阶导数 diff(f(x),n) diff(f(x),x,n)或者:syms x diff(f(x),n)syms x diff(f(x), x,n) 20 在MATLAB中没有直接求隐函数导数的命令,但是我们可以根据数学中求隐函数导数的方法,在中一步一步地进行推导;也可以自己编一个求隐函数导数的小程序;不过,最简便的方
29、法是调用Maple中求隐函数导数的命令,调用格式如下: maple(implicitdiff(f(x,y)=0,y,x) 在MATLAB中,没有直接求参数方程确定的函数的导数的命令,只能根据参数方程确定的函数的求导公式 一步一步地进行推导;或者,干脆自己编一个小程序,应用起来会更加方便。21 求不定积分 int(f(x) int (f(x),x)或者:syms x int(f(x) syms x int(f(x), x) 22 求定积分、广义积分 int(f(x),a,b) int (f(x),x,a,b)或者:syms x int(f(x),a,b) syms x int(f(x), x,a
30、,b) 23 进行换元积分的计算自身没有提供这一功能,但是可以调用Maple函数库中的changevar命令,调用方法如下:maple( with(student) ) 加载student函数库后,才能使用changevar命令maple( changevar( m(x)=p(u), Int(f(x),x) ) ) 把积分表达式中的m(x)代换成p(u)24 进行分部积分的计算自身没有提供这一功能,但是可以调用Maple函数库中的intparts命令,调用方法如下: maple( with(student) ) 加载student函数库后,才能使用intparts命令maple(intpart
31、s(Int(f(x),x),u) ) 指定u,用分部积分公式 进行计算25 对数列和级数进行求和 syms n symsum(f(n), n a ,b )26 进行连乘 maple(product(f(n),n=a.b)27 展开级数syms x taylor(f(x), x, n, a )28 进行积分变换syms s t laplace( f(t), t, s ) 拉普拉斯变换 ilaplace( F(s), s, t ) 拉普拉斯变换的逆变换 syms t fourier( f(t), t, ) 傅立叶变换 ifourier( F(), , t ) 傅立叶变换的逆变换 syms n z ztrans( f(n), n, z) Z变换 iztrans( F(z), z, n ) Z变换的逆变换 在matlab中,矩形法、梯形法和辛普森法求近似积分可以用自身的命令,也可调用Maple的相应命令。调用方法如下: maple(with(student) ) maple(Maple中求定积分近似值的命令)29 解微分方程dsolve(微分方程,自变量) dsolve(微分方程,初始条件或边界条件,自变量)30 解微分方程组dsolve(微分方程组,自变量) dsolve(微分方程组,初始条件或边界条件,自变量)
限制150内