1、MATLAB语言课程论文MATLAB三维图形的精细处理学 号: 12010245304姓 名: 万 元专 业 :电子信息工程班 级:10级 电子班指导老师: 汤 全 武学 院:物理电气信息学院完成日期:2011年12月11日MATLAB三维图形的精细处理(万元 12010245304 2010级电子班)【摘要】:MATLAB语言在三维图形中的精细处理,通过MATLAB语言程序对三维图形的视点、色彩及图形的裁剪等问题的处理。【关键词】:MATLAB 三维图形 精细处理 SUBPLOT SURF COLORMAP VIEW一、提出问题如今随着社会科技飞速的发展,计算机在各个领域得到了广泛的应用,尤
2、其是一些软件和语言程序的开发和应用,在日常生活中使我们遇到一些繁琐的问题是方便了很多。其中,MATLAB语言程序具有强大的计算和绘图功能,它的程序简单、明了,在应用时能精准、快速的解决各种复杂的问题。生活中,我们在很多方面要用到三维图形,在应用三维图形时,我们要对三维图形的视点、色彩及图形的裁剪问题进行处理,这样在应用时才更加合理。遇到这样复杂而繁琐的问题时,MATLAB语言程序则是最好的选择。下面将是用MATLAB来解决一些三维图形的问题实例。二、应用实例1、从不同视点绘制y=sin(y).*cos(x)函数曲面 程序如下: x=0:0.2:4*pi; % x的取值范围为0到4,其中步长为0
3、.2x,y=meshgrid(x); % 在0到4区域生成网格坐标 z=sin(y).*cos(x); % 曲面方程surf(x,y,z); % 绘制三维曲面,对其网格着色xlabel(x-axis),ylabel(y-axis),zlabel(z-axis);title(surf);subplot(2,2,1); % 选择22个区中的1号区surf(z); % 在1号区绘制该曲面,对其网格着色view(-37.5,30); % 方位角为-37.5度,仰角为30度subplot(2,2,2); % 选择22个区中的2号区surf(z); % 在2号区绘制该曲面,对其网格着色view(90,0)
4、; % 方位角为90度,仰角为0度subplot(2,2,3); % 选择22个区中的3号区surf(z); % 在2号区绘制该曲面,对其网格着色view(45,-45); % 方位角为45度,仰角为-45度 程序运行结果如图1、图2、图3所示图1 方位角-37.5度,仰角为30度 图2 方位角90度,仰角为0度 图3 方位角45度,仰角为-45度2、球表面着色的应用 程序如下:x,y,z=sphere(50); % 绘制圆滑度为50的球面colormap(hsv); % 对球面设置两端为红的饱和值色subplot(2,2,1); % 选择22个区中1号区surf(x,y,z); % 在1号区
5、绘制球面,对其网格着色subplot(2,2,2); % 选择22个区中2号区surf(x,y,z); % 在2号区绘制球面,对其网格着色shading flat; % 将每个网格片用同一种颜色进行着色,网格也用相同颜色是表面更光滑subplot(2,2,3); % 选择22个区中3号区surf(x,y,z); % 在3号区绘制球面,对其网格着色shading interp; % 在网格片内采用颜色插值处理,是表面显得的最光滑程序运行结果如图4所示图4 利用SURF函数和SHADING命令对球表面网格进行着色并使的图表面最光滑1、 柱面颜色的向量表示3.1程序如下:x,y,z=cylinder
6、(10,100); % 绘制底面半径为10,圆柱周围有100 个间隔点的圆柱colormap(0 1 0); % 设置圆柱的颜色为绿色surf(x,y,z); % 绘制圆柱图形,对其网格着色 程序运行结果如图5所示图5 颜色为【0 1 0】(即为绿色)的圆柱3.2程序如下:x,y,z=cylinder(10,100); % 绘制底面半径为10,圆柱周围有100个间隔的圆柱colormap(1 1 0); % 设置圆柱颜色为黄色surf(x,y,z); % 绘制圆柱图形,对其网格着色 程序运行结果如图6所示 图6 颜色为【1 1 0】(即为黄色)的圆柱 1、 图形的裁剪处理程序如下:x=0:pi
7、/20:6*pi; % x的取值范围为0到6,步长为/20z=cos(x); % 函数g=find(abs(y)0.5); % 找到要裁剪的部分x(g)=NaN; % 裁剪函数plot(x,y); 程序运行结果如图7所示 图7 Y小于0.5的COS函数在0到6区域内的图像三、结论 强大的绘图功能是MATLAB的特点之一。MATLAB提供了一系列的绘图函数,同时在处理三维图形方面有强大的功能,充分体现了MATLAB语言程序简单、明了和精准的特点。1. 在处理三维图形视点为题时用VIEW函数,既简单又好用。2. 在处理三维图形色彩问题时用COLORMAP函数和SURF函数,把图形表面的色彩处理得很
8、匀称,而且时的图形表面很光滑,看起来很美观。3. 在对图形的裁剪处理方面有NaN函数更显得方便,通过此函数可以将那些不可用的部分进行裁剪,从而达到对图形裁剪的目的。综上所述,可以得出MATLAB在三维图形精细处理方面具有强大易用的功能,在日常生活中给我们带来了很大的帮助,是一些很难解决的问题容易化。这是我第一次做论文,从中学到了很多,其中怎样去做一篇论文和论文的格式及一些细节问题,这对我将来做毕业论文及其它论文都有很大的帮助。通过这样的方式对这门学科进行测试再好不过了,在做论文的过程中才发现只有不断的看书,不断的查资料和问老师同学才能把一些程序弄懂,这样写起来才会顺手。知识只有在应用的过程才能
9、理解和掌握的更好。希望在以后的学习中这样的机会会更多,因为我觉得这样的学习方式更有利于我们对知识的掌握,同时也使得我们觉得学有所用,经常通过这样的锻炼,我们在以后的工作中会应用的更加自如,同时这对我们以后的发展很有帮助,因为我们想成为知识的主人,而不是知识的奴隶。四、课程体会经过一学期紧张而有序的课程学习,在忙碌之余也得到了颇多的收获。我深深体会到MATLAB语言相对于同类程序语言更方便更简洁易懂。开始接触Matlab是在大二初开始的,看到这么课程的第一眼感觉很陌生,程序设计与应用!但是当我翻开书看的时候,我发现Matlab语句原来挺简单的。事实上,我之前学习过C语言和VB,对里面的程序相当的
10、熟悉,这让我对Matlab的学习产生了浓厚的兴趣。本学期通过我们对Matlab运行系统的了解,通过老师对我课程的讲解,我们主要学习了Matlab的数据及其运算、Matlab的矩阵分析与处理、Matlab的程序设计、Matlab绘图、Matlab的数值计算、Matlab的符号计算等。书里面所表现出来的知识内容都深深的吸引着我,让我不断的想要去探究它。在不断的学习与好奇下,我自己下载了Matlab程序到自己电脑上,了解到Matlab的不断发展才有了我们今天这么实用、拥有这么强大功能的语言。早期呢,Matlab是用FORTRAN语言编写的,尽管功能十分的简单,但作为免费软件还是吸引了大批使用者,再进
11、过几年的校际流传,最终决定Matlab的核心采用C语言编写,除了原用的市值计算功能外,还新增了图形处理功能。而就这其中的绘图让我产生了特别浓厚的兴趣。再者了解了Matlab环境的准备、并掌握了Matlab的操作界面上各个工具所具有的作用。其中Matlab中有个帮助系统,功能也相当的强大。Matlab提供了数目繁多的函数和命令,我们要全部把他们记下来是很不现实的。所以我们只能先掌握一些基本的内容,然后在实践中不断地总结积累,逐步掌握其他内容。通过软件系统本身提供的帮助功能来学习软件的使用是非常重要的。都说要了解Matlab,最简洁的快速的方法就是在命令窗口通过帮助命令对特定的内容进行快速的查询。
12、的确如此,帮助命令包括help和lookfor命令。Help命令是查询函数语法的最基本方法,查询信息直接显示在命令窗口。在命令窗口中直接输入help命令将会显示当前帮助系统中所包含的所有项目,及搜索路径中所有的目录名称。Help命令只搜索出那些关键字完全匹配的文件,而lookfor命令对搜索范围内的M文件进行关键字搜索,条件比较宽松。Matlab帮助窗口相当于一个帮助信息浏览器。使用帮助窗口可以搜索和查看所有Matlab的帮助文档,还能运行有关演示程序。通常可以通过以下3种方法打开Matlab的帮助窗口。(1)、 单击Matlab主窗口工具栏中的Hlep按钮。(2)、在命令窗口中运行helpw
13、in、helpdesk或doc命令。(3)、选择Help按钮菜单中的Matlab Help命令。 接着我们便开始了Matlab的学习,书本里面大部分语句我都相当的熟悉,理解起来也更加的快,所以对Matlab的掌握也相对比较好。我们在第三章学习了矩阵的分析与处理,这与C语言和VB相比较而言,Matlab计算更加简单易懂,这就让我们对矩阵的认识更加深了一步,同时也起到了我们对知识回顾的作用,可以说是相当的受益。但是最最吸引我的还是Matlab的绘图功能。无论死在哪个领域都能用到Matlab绘图,可见Matlab绘图功能强大与实用广泛性。本书中介绍了Matlab绘制二维和三维图形的高层绘图函数以及其
14、他图形控制函数的使用方法,还介绍了底层绘图方法。它不仅可以绘制我们高中学习高数里最简单的基本函数的图像,比如说平面直角坐标系下的椭圆、双曲线、抛物线等,还可绘制高等数学里特别复杂的函数图像,这样让我们一目了然的看到了函数所需要求解的东西以及为什么要使用哪种方法,在Matlab图像里完全能读得出来。同时它又可以用图解分析物理方面的问题(比如说物体的运动轨迹),还在数理方程、电路分析、模拟电路、线性代数、等等很多学科中有很重要的应用,才发现原来Matlab有这么广泛的应用,可见学好Matlab的这门课程的重要性了。而且我也特别喜欢自己编写点程序绘图来玩,感觉挺好的,我打算把这学期没学完的东西自己在看完,以后肯定受益多多。【参考文献】1 许波,刘征.MATLAB工程数学应用M.北京; 清华大学出版社,2000.2 张培强.MATLAB语言演算纸式的科学工程计算语言M.北京;中国科学技术大学出版社,1995.3 刘卫国.MATLAB程序设计与应用(第二版)刘卫国M.北京;高等教育出版社,2006.