搜档网
当前位置:搜档网 › matble课程论文(MATLAB在三维作图中的应用)

matble课程论文(MATLAB在三维作图中的应用)

《MATLAB》课程论文

MATLAB在三维作图中的应用

姓名:

学号:

专业:

班级:

指导老师:

学院:

完成日期:

MATLAB在三维作图中的应用

[摘要]MATLAB提供了一系列的绘图函数,用户不仅不许考虑绘图细节,只需给出一些基本的参数就能得到所需要的图形,这一类函数称为高层绘图函数。除此之外,MATLAB还提供了直接对句柄进行操作的一系列的低层的绘图操作。这类操作将图形的每个元素看做是一个独立的对象,系统给每个对象独立的分配一个句柄,以后可以通过该句柄对改图元素进行操作,而不影响图形的其他部分。高层绘图操作简单明了,方便高效,使用户最常使用的绘图方法,而低层绘图操作控制和表现图形的能力更强,为用户自主绘图创造了条件。其实MATLAB的高层绘图函数都是利用低层绘图函数建立起来的。所以MATLAB的计算准确、效率高、使用快捷等优点常被广泛应用于科学和工程领域.

[关键字]MATLAB语言三维图形图像处理绘制

一,问题的提出

MATLAB语言是当前国际学科界应用很广泛的一种软件,强大的绘图功能是MATLAB的特点之一。MATLAB提供了一系列的绘图函数,利用它强大的图像处理来绘制三维图形既简单而且也很方便。在绘制三维图形的过程中也用到了MATLAB语言的其他功能,绘制三维图形时用到了它提供的一些函数,利用这些函数可以方便的生成一些特殊矩阵,因此可生成一个坐标平面。MATLAB语言强大的功能也在二维三维绘图中的得到了很广泛的应用,利用它所提供的精细的图像处理功能,如MATLAB还提

供了直接对句柄进行操作的一系列的低层的绘图操作。这类操作将图形的每个元素看做是一个独立的对象,系统给每个对象独立的分配一个句柄,以后可以通过该句柄对改图元素进行操作,而不影响图形的其他部分。高层绘图操作简单明了,使用户最常使用的绘图方法,而低层绘图操作控制和表现图形的能力更强,为用户自主绘图创造了条件,还可以对所绘制的三维图形作一个修饰的处理。MATLAB语言具有强大的以图形化显示矩阵和数组的能力,同时它给这些图形增加注释并且可以对图形进行标注和打印。MATLAB的图形技术包括三维的可视化、图形处理、动画等高层次的专业图形的高级绘图,例如图形的光照处理、色度处理以及四维数据的表现等。那么,如何把它强大的功能应用于实际应用中,下面我们将用实例说明MATBLE在三维作图中的应用。

二,MATLAB的主要功能及特点

MATLAB近几年广泛用于图像处理和识别, 使用MATLAB设计模式识别应用软件将使设

计者获得更大的自由, 可以任意执行特殊的算法和实现复杂的操作,MATLAB之所以成为世界顶级的科学计算与数学应用软件, 是因为它随着版本的升级与不断完善而具有愈来愈强大的功能。(1)数值计算功能。(2)符号计算功能。(3)数据分析功能。(4)动态仿真功能。

(5)图形文字统一处理功能。

MATLAB 有三大特点:一是功能强大。主要包括数值计算和符号计算、计算结果和编程可视化、数学和文字统一处理、离线和在线计算。二是界面友好,编程效率高。MATLAB 是一种以矩阵为基本单元的可视化程序设计语言, 语法结构简单, 数据类型单一,指令表达与标准教科书的数学表达式相近。三是开放性强。MATLAB 有很好的可扩充性, 可以把它当成一种更高级的语言去使用。使用它很容易编写各种通用或专用应用程序。四是matble拥有丰富的库函数。

三, MATBLE在三维制图中的问题

例1、两个同直径圆管相交程序

m=30; %定义变量

theta=(0:m)/m*2*pi; %取角度

z=1.2*(-m:2:m)/m; %设置竖直圆管的高度

r=ones(size(z)); %生成同z大小的全一矩阵

z1=z'*ones(1,m+1); %生成第一个圆管的坐标矩阵

x1=r'*cos(theta); %生成第一个圆管的坐标矩阵

y1=r'*sin(theta); %生成第一个圆管的坐标矩阵

surf(x1,y1,z1); %绘制竖立的圆管

x=(-m:2:m)/m; %产生行矩阵

x2=x'*ones(1,m+1); %生成第一个圆管的坐标矩阵

y2=r'*cos(theta); %生成第一个圆管的坐标矩阵

z2=r'*sin(theta); %生成第一个圆管的坐标矩阵

surf(x2,y2,z2); %绘制平放的圆管

surf(x1,y1,z1);hold on; %竖立的圆管上添加平放的圆管

surf(x2,y2,z2); %绘制平放的圆管

axis equal,axis off %去掉坐标轴

title('两个同直径圆管的相交'); %添加标题

hold off %关闭图形保持

运行结果如图1所示。

图1 两个同直径圆管的相交图形

两个同直径圆管相交的前视图的程序

x1=[-1,-1,1,1,-1]; %在x轴上取点

y1=[1.2,-1.2,-1.2,1.2,1.2]; %在y轴上取点

x2=[-1,1]; %在x轴上取点

y2=[1,-1]; %在y轴上取点

x3=[1,-1]; %在x轴上取点

y3=[1,-1]; %在y轴上取点

plot(x1,y1); %把各点连起来设置外围线hold on %设置图形保持状态

plot(x2,y2); %绘制两条相交直线中的一条hold on %设置图形保持状态

plot(x3,y3); %绘制两条相交直线中的另一条ax1=[0,1,1]; %在x轴上取点

ay1=[0,-1,1]; %在y轴上取点

ax2=[0,-1,-1]; %在y轴上取点

fill(ax1,ay1,'g'); %填充颜色

hold on %设置图形保持状态

fill(ax2,ay2,'g') %添充颜色

axis equal,axis off; %去掉坐标轴

title(' 两个同直径圆管相交的前视图'); %给绘制的图形添加标题

运行结果如图2所示。

图2 两个同直径圆管相交的前视图图形两个同直径圆管相交的侧视图程序

r1=1; %定义变量

t=0:pi/90:2*pi; %取角度

xc=r1*cos(t); %水平圆柱

zc=r1*sin(t); %水平圆柱

fill(xc,zc,'y'); %给水平圆柱填充颜色hold on %设置图形保持状态

tx1=[1,1,-1,-1]; %在x轴上取点

ty1=[0,1,1,0]; %在y轴上取点

plot(tx1,ty1); %绘制竖立的圆管

hold on %设置图形保持状态

tx2=[1,1,-1,-1]; %在x轴上取点

ty2=[0,-1,-1,0]; %在y轴上取点

plot(tx2,ty2); %绘制图形

axis equal,axis off; %去掉坐标轴

title(' 两个同直径圆管相交的侧视图'); %添加标题

运行结果如图3所示。

图3 两个同直径圆管相交的侧视图图形

例2,mesh和plot是三度空间立体绘图的基本命令,mesh可画出立体网状图,plot则可画出立体曲面图,两者产生的图形都会依高度而有不同颜色。下列命令可画出由函数形成的立体网状图:

x=linspace(-2, 2, 25); % 在x轴上取25点

y=linspace(-2, 2, 25); % 在y轴上取25点

[xx,yy]=meshgrid(x, y); % xx和yy都是25x25的矩阵

zz=xx.*exp(-xx.^2-yy.^2); % 计算函数值,zz也是21x21的矩阵

mesh(xx, yy, zz); % 画出立体网状图

立体曲面图:

x=linspace(-2, 2, 25); % 在x轴上取25点

y=linspace(-2, 2, 25); % 在y轴上取25点

[xx,yy]=meshgrid(x, y); % xx和yy都是25x25的矩阵

zz=xx.*exp(-xx.^2-yy.^2); % 计算函数值,zz也是25x25的矩阵

surf(xx, yy, zz); % 画出立体曲面图

peaks为了方便测试立体绘图,MATLAB提供了一个peaks函数,可产生一个凹凸有致的曲面,包含了三个局部极大点及三个局部极小点,其方程式为:

要画出此函数的最快方法即是直接键入peaks:

peaks

z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) - 10*(x/5 - x.^3 -

y.^5).*exp(-x.^2-y.^2) - 1/3*exp(-(x+1).^2 - y.^2)

我们亦可对peaks函数取点,再以各种不同方法进行绘图。meshz可将曲面加上围裙:

[x,y,z]=peaks;

meshz(x,y,z);

waterfall可在x方向或y方向产生水流效果:

[x,y,z]=peaks;

waterfall(x,y,z);

下列命令产生在y方向的水流效果:[x,y,z]=peaks;

waterfall(x',y',z');

meshc同时画出网状图与等高线:[x,y,z]=peaks;

meshc(x,y,z);

surfc同时画出曲面图与等高线:

[x,y,z]=peaks;

surfc(x,y,z);

contour3画出曲面在三度空间中的等高线:contour3(peaks, 20);

contour画出曲面等高线在XY平面的投影:

contour(peaks, 20);

例三,螺旋线

1,静态螺旋线

a=0:0.1:20*pi;

h=plot3(a.*cos(a),a.*sin(a),2.*a,'b','linewidth',2);

axis([-50,50,-50,50,0,150]);

grid on

set(h,'erasemode','none','markersize',22);

xlabel('x轴');ylabel('y轴');zlabel('z轴');

title('静态螺旋线');

2,圆柱螺旋线

t=0:0.1:10*pi;

x=r.*cos(t);

y=r.*sin(t);

z=t;

plot3(x,y,z,'h','linewidth',2);

grid on

axis('square')

xlabel('x轴');ylabel('y轴');zlabel('z轴'); title('圆柱螺旋线')

例三,旋转抛物面

b=0:0.2:2*pi;

[X,Y]=meshgrid(-6:0.1:6);

Z=(X.^2+Y.^2)./4;

meshc(X,Y,Z);

axis('square')

xlabel('x轴');ylabel('y轴');zlabel('z轴'); title('旋转抛物面')

或直接用:ezsurfc('(X.^2+Y.^2)./4')

例四,椭圆柱面

load clown

ezsurf('(2*cos(u))','4*sin(u)','v',[0,2*pi,0,2*pi])

view(-105,40) %视角处理

shading interp %灯光处理

colormap(map) %颜色处理

grid on %添加网格线

axis equal %使x,y轴比例一致

xlabel('x轴');ylabel('y轴');zlabel('z轴'); %添加坐标轴说明title('椭圆柱面') %添加标题

例五,椭圆抛物面

b=0:0.2:2*pi;

[X,Y]=meshgrid(-6:0.1:6);

Z=X.^2./9+Y.^2./4;

meshc(X,Y,Z);

axis('square')

xlabel('x轴');ylabel('y轴');zlabel('z轴');

title('椭圆抛物面')

或直接用:ezsurfc('X.^2./9+Y.^2./4')

例六,双叶双曲面

ezsurf('8*tan(u)*cos(v)','8.*tan(u)*sin(v)','2.*sec(u)',[-pi./2,3*pi./2,0,2*pi]) axis equal

grid on

axis square

xlabel('x轴');ylabel('y轴');zlabel('z轴');

title('双叶双曲面')

例七、双曲柱面

load clown

ezsurf('2*sec(u)','2*tan(u)','v',[-pi/2,pi/2,-3*pi,3*pi]) hold on %在原来的图上继续作图

ezsurf('2*sec(u)','2*tan(u)','v',[pi/2,3*pi/2,-3*pi,3*pi]) colormap(map)

shading interp

view(-15,30)

axis equal

grid on

axis equal

xlabel('x轴');ylabel('y轴');zlabel('z轴');

title('双曲柱面')

例八、双曲抛物面(马鞍面)[X,Y]=meshgrid(-7:0.1:7);

Z=X.^2./8-Y.^2./6;

meshc(X,Y,Z);

view(85,20)

axis('square')

xlabel('x轴');ylabel('y轴');zlabel('z轴'); title('双曲抛物面')

或直接用:ezsurfc('X.^2./8-Y.^2./6')

例九、抛物柱面

[X,Y]=meshgrid(-7:0.1:7);

Z=Y.^2./8;

h=mesh(Z);

rotate(h,[1 0 1],180) %旋转处理

%axis([-8,8,-8,8,-2,6]);

axis('square')

xlabel('x轴');ylabel('y轴');zlabel('z轴');

title('抛物柱面')

或直接用:ezsurfc('Y.^2./8')

例十、环面

ezmesh('(5+2*cos(u))*cos(v)','(5+2*cos(u))*sin(v)','2*sin(u)',[0,2*pi,0,2*pi]) axis equal

grid on

xlabel('x轴');ylabel('y轴');zlabel('z轴');

title('环面')

例十一、椭球

ezsurfc('(5*cos(u))*sin(v)','(3*sin(u))*sin(v)','4*cos(v)',[0,2*pi,0,2*pi])

axis equal

grid on

xlabel('x轴');ylabel('y轴');zlabel('z轴');

title('椭球')

例十二、单叶双曲面

ezsurf('4*sec(u)*cos(v)','2.*sec(u)*sin(v)','3.*tan(u)',[-pi./2,pi./2,0,2*pi]) axis equal

grid on

xlabel('x轴');ylabel('y轴');zlabel('z轴');

title('单叶双曲面')

例十三、旋转单叶双曲面

load clown

ezsurf('8*sec(u)*cos(v)','8.*sec(u)*sin(v)','2.*tan(u)',[-pi./2,pi./2,0,2*pi]) colormap(map)

view(-175,30)

%alpha(.2) %透明处理

axis equal

grid on

axis square

xlabel('x轴');ylabel('y轴');zlabel('z轴');

title('旋转单叶双曲面')

例十四、圆柱面

subplot(1,2,1)

ezsurf('(2*cos(u))','2*sin(u)','v',[0,2*pi,0,2*pi]) grid on

shading interp

axis equal

xlabel('x轴');ylabel('y轴');zlabel('z轴');

title('圆柱面')

subplot(1,2,2)

cylinder(30)

shading interp

axis square

title('调用cylinder函数所得圆柱面')

利用MATLAB语言强大的绘图功能可以精确的绘制出一系列的三维图像。MATLAB提供了一系列的绘图函数,用户不仅不许考虑绘图细节,只需给出一些基本的参数就能得到所需要的图形,这一类函数称为高层绘图函数。除此之外,MATLAB还提供了直接对句柄进行操作的一系列的低层的绘图操作。这类操作将图形的每个元素看做是一个独立的对象,系统给每个对象独立的分配一个句柄,以后可以通过该句柄对改图元素进行操作,而不影响图形的其他部分。高层绘图操作简单明了,方便高效,使用户最常使用的绘图方法,而低层绘图操作控制和表现图形的能力更强,为用户自主绘图创造了条件。其实MATLAB的高层绘图函数都是利用低层绘图函数建立起来的。在绘制此三维图形的过程中,用到了MATLAB的很多强大的功能。

四,课程体会

经过一学期紧张而有序的课程学习,在忙碌之余也得到了颇多的收获。我深深体会到MATLAB语言相对于同类程序语言更方便更简洁易懂,而且,它所具有的强大的功能可以使我们解决很多用其他计算机语言不容易解决的问题。MATLAB提供了一系列的绘图函数,用户不仅不许考虑绘图细节,只需给出一些基本的参数就能得到所需要的图形,这一类函数称为高层绘图函数,这学期学习让我感受颇多,这门语言相对于其他计算机语言而言不仅简单易操作而且它还具备强大的功能,不管你做什么设计只要牵涉到编程,它总会提供一些函数给我们供我们应用。这是我在学习的过程中的一些技巧:

1编程问题最头疼的不是编程序,而是调程序,所以在你的程序编完之后,一定要进行验证其正确性,你要尽量多的设想你的问题的复杂性,当然,要一步一步复杂,这样才能保证你的程序的适用性很强

2你把基本的知识看过之后,就需要找一个实际的程序来动手编一下,不要等所有的知识都学好之后再去编程,你要在编程的过程中学习,程序需要什么知识再去补充,编程是一点一点积累的,所以你要需做一些随手笔记什么的。

3你需要找一本matlab的函数工具词典,就像汉语词典一样,你要尽量多的熟悉matlab自带的函数,及其作用,因为matlab的自带函数特别多,基本上能够满足一般的数据和矩阵的计算,所以基本上不用你自己编函数。这一点对你的程序非常有帮助,可以使你的程序简单,运行效率高,可以节省很多时间。

4最好找一个熟悉编程的人来辅助你的学习,这就包括很多编程的技巧问题,程序的结构设计问题,对于程序的运行效率非常有帮助。有的时候,你编出来的程序,能够运行,

MATLAB绘图功能大全

Matlab绘图 强大的绘图功能是Matlab的特点之一,Matlab提供了一系列的绘图函数,用户不需要过多的考虑绘图的细节,只需要给出一些基本参数就能得到所需图形,这类函数称为高层绘图函数。此外,Matlab 还提供了直接对图形句柄进行操作的低层绘图操作。这类操作将图形的每个图形元素(如坐标轴、曲线、文字等)看做一个独立的对象,系统给每个对象分配一个句柄,可以通过句柄对该图形元素进行操作,而不影响其他部分。 本章介绍绘制二维和三维图形的高层绘图函数以及其他图形控制函数的使用方法,在此基础上,再介绍可以操作和控制各种图形对象的低层绘图操作。 一、二维绘图 二维图形是将平面坐标上的数据点连接起来的平面图形。可以采用不同的坐标系,如直角坐标、对数坐标、极坐标等。二维图形的绘制是其他绘图操作的基础。 (一)绘制二维曲线的基本函数 在Matlab中,最基本而且应用最为广泛的绘图函数为plot,利用它可以在二维平面上绘制出不同的曲线。 1.plot函数的基本用法

plot函数用于绘制二维平面上的线性坐标曲线图,要提供一组x 坐标和对应的y坐标,可以绘制分别以x和y为横、纵坐标的二维曲线。plot函数的应用格式 plot(x,y) 其中x,y为长度相同的向量,存储x坐标和y坐标。 例51 在[0 , 2pi]区间,绘制曲线 程序如下:在命令窗口中输入以下命令 >> x=0:pi/100:2*pi; >> y=2*exp(-0.5*x).*sin(2*pi*x); >> plot(x,y) 程序执行后,打开一个图形窗口,在其中绘制出如下曲线 注意:指数函数和正弦函数之间要用点乘运算,因为二者是向量。 例52 绘制曲线 这是以参数形式给出的曲线方程,只要给定参数向量,再分别求出x,y向量即可输出曲线: >> t=-pi:pi/100:pi; >> x=t.*cos(3*t); >> y=t.*sin(t).*sin(t); >> plot(x,y) 程序执行后,打开一个图形窗口,在其中绘制出如下曲线 以上提到plot函数的自变量x,y为长度相同的向量,这是最常见、最基本的用法。实际应用中还有一些变化。

MATLAB中plotyy函数详解:matlab双Y轴作图

Matlab plotyy画双纵坐标图实例 x = 0::20; y1 = 200*exp*x).*sin(x); y2 = *exp*x).*sin(10*x); [AX,H1,H2] = plotyy(x,y1,x,y2,'plot'); set(AX(1),'XColor','k','YColor','b'); set(AX(2),'XColor','k','YColor','r'); HH1=get(AX(1),'Ylabel'); set(HH1,'String','Left Y-axis'); set(HH1,'color','b'); HH2=get(AX(2),'Ylabel'); set(HH2,'String','Right Y-axis'); set(HH2,'color','r'); set(H1,'LineStyle','-'); set(H1,'color','b'); set(H2,'LineStyle',':'); set(H2,'color','r'); legend([H1,H2],{'y1 = 200*exp*x).*sin(x)';'y2 = *exp*x).*sin(10*x)'}); xlabel('Zero to 20 musec.');

title('Labeling plotyy'); Q:右边用蓝色圈起来的tick能去掉吗由于用plotyy画图,为了使图尽量地显示出来,用了set(AX(1),'YLimMode','auto'),但这样可能会导致左边AX(1)和右边AX(2)的tick的间距不一样,影响美观。或者说能不能使plotyy画出的图两边的tick间距是一样的,这样在图形右边的tick就会重合在一起. A:如果只是想让plotyy的图美一些,可以使用其如下形式的调用方式: [AX,H1,H2] = plotyy(...) 其中AX(2)就是右边Axes对象的句柄,拿到它以后就可以set或者get来处理了,也可以把其ytick关掉。 A:也可以用line语句来画,就没有左边和上边的线了。 Q:plotyy(X1,Y1,X2,Y2,FUN1,FUN2),FUN1和FUN2应该怎么写 A:这两个FUN代表plotyy不一定要用两个plot,比如下面的例子,一条曲线用plot,一条用semilogy x1=1::100; x2=x1;

2011全国大学生数模竞赛A题三维立体绘图MATLAB代码

2011全国大学生数模竞赛A题 三维立体绘图MATLAB代码及图像 下载两个数据文件保存到MATLAB工作目录中,同时将下面的程序拷贝到一个M文件里面运行即可。 MATLAB代码和数据文件请到这里下载:https://www.sodocs.net/doc/415657243.html,/thread-19793-1-1.html A题城市表层土壤重金属污染分析 随着城市经济的快速发展和城市人口的不断增加,人类活动对城市环境质量的影响日显突出。对城市土壤地质环境异常的查证,以及如何应用查证获得的海量数据资料开展城市环境质量评价,研究人类活动影响下城市地质环境的演变模式,日益成为人们关注的焦点。 按照功能划分,城区一般可分为生活区、工业区、山区、主干道路区及公园绿地区等,分别记为1类区、2类区、……、5类区,不同的区域环境受人类活动影响的程度不同。 现对某城市城区土壤地质环境进行调查。为此,将所考察的城区划分为间距1公里左右的网格子区域,按照每平方公里1个采样点对表层土(0~10 厘米深度)进行取样、编号,并用GPS记录采样点的位置。应用专门仪器测试分析,获得了每个样本所含的多种化学元素的浓度数据。另一方面,按照2公里的间距在那些远离人群及工业活动的自然区取样,将其作为该城区表层土壤中元素的背景值。 附件1列出了采样点的位置、海拔高度及其所属功能区等信息,附件2列出了8种主要重金属元素在采样点处的浓度,附件3列出了8种主要重金属元素的背景值。 现要求你们通过数学建模来完成以下任务: (1) 给出8种主要重金属元素在该城区的空间分布,并分析该城区内不同区域重金属的污染程度。 (2) 通过数据分析,说明重金属污染的主要原因。 (3) 分析重金属污染物的传播特征,由此建立模型,确定污染源的位置。 (4) 分析你所建立模型的优缺点,为更好地研究城市地质环境的演变模式,还应收集什么信息?有了这些信息,如何建立模型解决问题?

matlab三维二维离散曲面画图教程

傅里叶变换 img=imread('RADU}4W~M9]09V7Q)ZQ5%~7.png'); %img=double(img); f=fft2(img); %傅里叶变换 f=fftshift(f); %使图像对称 r=real(f); %图像频域实部 i=imag(f); %图像频域虚部 margin=log(abs(f)); %图像幅度谱,加log便于显示 phase=log(angle(f)*180/pi); %图像相位谱 l=log(f); subplot(2,2,1),imshow(img),title('源图像'); subplot(2,2,2),imshow(l,[]),title('图像频谱'); subplot(2,2,3),imshow(margin,[]),title('图像幅度谱'); subplot(2,2,4),imshow(phase,[]),title('图像相位谱'); https://www.sodocs.net/doc/415657243.html,/s/blog_1667198560102wmzu.html 傅里叶变换 I = imread('RADU}4W~M9]09V7Q)ZQ5%~7.png'); %读入数字图像 I = rgb2gray(I);%将图像进行灰度处理 J = fft2(I);%将图像实行傅里叶变换 figure,imshow(I);%这里能得到频谱图 J = fftshift(J); figure,imshow(log(abs(J)),[]); %将频谱平移 J(abs(J)<5)=0;%不必要的过滤掉 figure,imshow(log(abs(J)+eps),[]); J = ifftshift(J);K = ifft2(J);figure,imshow(K,[0 255]);%傅里叶逆变换 自己所写的代码 I = imread('RADU}4W~M9]09V7Q)ZQ5%~7.png'); %读入数字图像 J = fft2(I); %将图像实行傅里叶变换figure,imshow(I); %这里能得到频谱图 J = fftshift(J); figure,imshow(log(abs(J)),[]); %将频谱平移 J(abs(J)<5)=0; %不必要的过滤掉figure,imshow(log(abs(J)+eps),[]); J = ifftshift(J);K = ifft2(J); ss=real(ifft2(J));sss=uint8(ss);subplot(1,2,2); imshow(sss) figure,imshow(K,[0 255]); %傅里叶逆变换

教你如何用matlab绘图(全面)

强大的绘图功能是Matlab的特点之一,Matlab提供了一系列的绘图函数,用户不需要过多的考虑绘图的细节,只需要给出一些基本参数就能得到所需图形,这类函数称为高层绘图函数。此外,Matlab还提供了直接对图形句柄进行操作的低层绘图操作。这类操作将图形的每个图形元素(如坐标轴、曲线、文字等)看做一个独立的对象,系统给每个对象分配一个句柄,可以通过句柄对该图形元素进行操作,而不影响其他部分。 本章介绍绘制二维和三维图形的高层绘图函数以及其他图形控制函数的使用方法,在此基础上,再介绍可以操作和控制各种图形对象的低层绘图操作。 一.二维绘图 二维图形是将平面坐标上的数据点连接起来的平面图形。可以采用不同的坐标系,如直角坐标、对数坐标、极坐标等。二维图形的绘制是其他绘图操作的基础。 一.绘制二维曲线的基本函数 在Matlab中,最基本而且应用最为广泛的绘图函数为plot,利用它可以在二维平面上绘制出不同的曲线。 1.plot函数的基本用法 plot函数用于绘制二维平面上的线性坐标曲线图,要提供一组x坐标和对应的y坐标,可以绘制分别以x和y为横、纵坐标的二维曲线。plot函数的应用格式 plot(x,y) 其中x,y为长度相同的向量,存储x坐标和y坐标。 例51 在[0 , 2pi]区间,绘制曲线 程序如下:在命令窗口中输入以下命令 >> x=0:pi/100:2*pi; >> y=2*exp(-0.5*x).*sin(2*pi*x); >> plot(x,y) 程序执行后,打开一个图形窗口,在其中绘制出如下曲线 注意:指数函数和正弦函数之间要用点乘运算,因为二者是向量。 例52 绘制曲线 这是以参数形式给出的曲线方程,只要给定参数向量,再分别求出x,y向量即可输出曲线:

matlab绘图详解

一.二维图形(Two dimensional plotting) 1. 基本绘图函数(Basic plotting function):Plot, semilogx, semilogy, loglog, polar, plotyy (1). 单矢量绘图(single vector plotting):plot(y),矢量y的元素与y元素下标之间在线性坐标下的关系曲线。 例1:单矢量绘图 y=[0 0.6 2.3 5 8.3 11.7 15 17.7 19.4 20]; plot(y) 可以在图形中加标注和网格, 例2:给例1 的图形加网格和标注。 y=[0 0.6 2.3 5 8.3 11.7 15 17.7 19.4 20]; plot(y) title('简单绘图举例'); xlabel('单元下标'); ylabel('给定的矢量'); grid (2). 双矢量绘图(Double vector plotting):如x和y是同样长度的矢量, plot(x,y)命令将绘制y元素对应于x元素的xy曲线图。 例:双矢量绘图。 x=0:0.05:4*pi; y=sin(x); plot(x,y) (3). 对数坐标绘图(ploting in logarithm coordinate): x轴对数 semilogx, y轴对数semilogy, 双对数loglog, 例:绘制数组y的线性坐标图和三种对数坐标图。 y=[0 0.6 2.3 5 8.3 11.7 15 17.7 19.4 20]; subplot(2,2,1); plot(y); subplot(2,2,2); semilogx(y) subplot(2,2,3); semilogy(y); subplot(2,2,4); loglog(y) (4)极坐标绘图( Plotting in polar coordinate): polar(theta,rho) theta—角度, rho—半径 例:建立简单的极坐标图形。 t=0:.01:2*pi; polar(t,sin(2*t).*cos(2*t)) 2. 多重曲线绘图(Multiple curve plotting) (1)一组变量绘图(A group variable plotting) plot(x,y) (a) x为矢量,y为矩阵时plot(x,y)用不同的颜色绘制y矩阵中各行或列对应于x的曲线。例1: x=0:pi/50:2*pi; y(1,: )=sin(x); y(2,:) =0.6*sin(x); y(3, :)=0.3*sin(x); plot(x,y) (b) x为矩阵,y为矢量时绘图规则与(a)的类似,只是将x中的每一行或列对应于y进行绘图。。 例 2: x(1,: )=0:pi/50:2*pi; x(2,: )=pi/4:pi/50:2*pi+pi/4; x(3,: )=pi/2:pi/50:2*pi+pi/2; y=sin(x(1,: )); plot(x,y)

实验五MATLAB的基本绘图方法

实验三MATLAB的基本绘图方法 一、实验目的 1.二维平面图形的绘制 2.三维立体图形的绘制 3.隐函数作图 二、实验地点:A404 三、实验日期: 四、实验内容 (一)二维平面图形的绘制 1、Plot的使用方法介绍 plot 是绘制二维图形的最基本函数,它是针对向量或矩阵的列来绘制曲线的。也就是说,使用plot 函数之前,必须首先定义好曲线上每一点的x 及y 坐标,常用格式为:(1)plot(x) 当x 为一向量时,以x 元素的值为纵坐标,x 的序号为横坐标值绘制 曲线。当x 为一实矩阵时,则以其序号为横坐标,按列绘制每列元素值相对于其序号的曲线,当x 为m×n 矩阵时,就由n 条曲线。 (2)plot(x,y) 以x 元素为横坐标值,y 元素为纵坐标值绘制曲线。 (3)plot(x,y1,x,y2,…) 以公共的x 元素为横坐标值,以y1,y2,…元素为纵坐标值绘制多条曲线。 例1:画出一条正弦曲线和一条余弦曲线。 >> x=0:pi/10:2*pi; >> y1=sin(x); >> y2=cos(x); >> plot(x,y1,x,y2) 注:在绘制曲线图形时,常常采用多种颜色或线型来区分不同的数据组,MA TLAB 软件专门提供了这方面的参数选项,我们只要在每个坐标后加上相关字符串,就可实现它们的功能。具体参见教材。 2、图形修饰 MATLAB 软件为用户提供了一些特殊的图形函数,用于修饰已经绘制好的图形。 图形修饰函数表如下: 函数含义 grid on (/off) 给当前图形标记添加(取消)网络 xlable(‘string’) 标记横坐标 ylabel(‘string’) 标记纵坐标 title(‘string’) 给图形添加标题 text(x,y,’string’) 在图形的任意位置增加说明性文本信息 gtext(‘string’) 利用鼠标添加说明性文本信息 axis([xmin xmax ymin ymax]) 设置坐标轴的最小最大值 例2、给例1的图形中加入网络和标记。 >> x=0:pi/10:2*pi; >> y1=sin(x); >> y2=cos(x); >> plot(x,y1,x,y2)

matlab图形处理工具

1、matlab函数bwareaopen──删除小面积对象 格式:BW2 = bwareaopen(BW,P,conn) 作用:删除二值图像BW中面积小于P的对象,默认情况下使用8邻域。 算法: (1)Determine the connected components. L = bwlabeln(BW, conn); (2)Compute the area of each component. S = regionprops(L, 'Area'); (3)Remove small objects. bw2 = ismember(L, find([S.Area] >= P)); 2、matlab函数bwarea──计算对象面积 格式:total = bwarea(BW) 作用:估计二值图像中对象的面积。 注:该面积和二值图像中对象的像素数目不一定相等。 3、matlab函数imclearborder──边界对象抑制 格式:IM2 = imclearborder(IM,conn) 作用:抑制和图像边界相连的亮对象。若IM是二值图,imclearborder将删除和图像边界相连的对象。默认情况conn=8。 注:For grayscale images, imclearborder tends to reduce the overall intensity level in addition to suppressing border structures. 算法: (1)Mask image is the input image. (2)Marker image is zero everywhere except along the border, where it equals the mask image. 4、matlab函数bwboundaries──获取对象轮廓 格式:B = bwboundaries(BW,conn)(基本格式) 作用:获取二值图中对象的轮廓,和OpenCV中cvFindContours函数功能类似。B是一个P×1的cell数组,P为对象个数,每个cell是Q×2的矩阵,对应于对象轮廓像素的坐标。 5、matlab函数imregionalmin──获取极小值区域 格式:BW = imregionalmin(I,conn) 作用:寻找图像I的极小值区域(regional maxima),默认情况conn=8。 Regional minima are connected components of pixels with a constant intensity value, and whose external boundary pixels all have a higher value. 6、matlab函数bwulterode──距离变换的极大值 格式:BW2 = bwulterode(BW,method,conn)

matble课程论文(MATLAB在三维作图中的应用)

《MATLAB》课程论文 MATLAB在三维作图中的应用 姓名: 学号: 专业: 班级: 指导老师: 学院: 完成日期:

MATLAB在三维作图中的应用 [摘要]MATLAB提供了一系列的绘图函数,用户不仅不许考虑绘图细节,只需给出一些基本的参数就能得到所需要的图形,这一类函数称为高层绘图函数。除此之外,MATLAB还提供了直接对句柄进行操作的一系列的低层的绘图操作。这类操作将图形的每个元素看做是一个独立的对象,系统给每个对象独立的分配一个句柄,以后可以通过该句柄对改图元素进行操作,而不影响图形的其他部分。高层绘图操作简单明了,方便高效,使用户最常使用的绘图方法,而低层绘图操作控制和表现图形的能力更强,为用户自主绘图创造了条件。其实MATLAB的高层绘图函数都是利用低层绘图函数建立起来的。所以MATLAB的计算准确、效率高、使用快捷等优点常被广泛应用于科学和工程领域. [关键字]MATLAB语言三维图形图像处理绘制 一,问题的提出 MATLAB语言是当前国际学科界应用很广泛的一种软件,强大的绘图功能是MATLAB的特点之一。MATLAB提供了一系列的绘图函数,利用它强大的图像处理来绘制三维图形既简单而且也很方便。在绘制三维图形的过程中也用到了MATLAB语言的其他功能,绘制三维图形时用到了它提供的一些函数,利用这些函数可以方便的生成一些特殊矩阵,因此可生成一个坐标平面。MATLAB语言强大的功能也在二维三维绘图中的得到了很广泛的应用,利用它所提供的精细的图像处理功能,如MATLAB还提 供了直接对句柄进行操作的一系列的低层的绘图操作。这类操作将图形的每个元素看做是一个独立的对象,系统给每个对象独立的分配一个句柄,以后可以通过该句柄对改图元素进行操作,而不影响图形的其他部分。高层绘图操作简单明了,使用户最常使用的绘图方法,而低层绘图操作控制和表现图形的能力更强,为用户自主绘图创造了条件,还可以对所绘制的三维图形作一个修饰的处理。MATLAB语言具有强大的以图形化显示矩阵和数组的能力,同时它给这些图形增加注释并且可以对图形进行标注和打印。MATLAB的图形技术包括三维的可视化、图形处理、动画等高层次的专业图形的高级绘图,例如图形的光照处理、色度处理以及四维数据的表现等。那么,如何把它强大的功能应用于实际应用中,下面我们将用实例说明MATBLE在三维作图中的应用。 二,MATLAB的主要功能及特点 MATLAB近几年广泛用于图像处理和识别, 使用MATLAB设计模式识别应用软件将使设

实验Matlab三维作图的绘制

实验9 三维绘图 一、实验目的 学会MATLAB软件中三维绘图的方法。 二、实验内容与要求 1.三维曲线图 格式一:plot3(X,Y,Z,S). 说明:当X,Y,Z均为同维向量时,则plot3描出点X(i),Y(i),Z(i)依次相连的空间曲线.若X,Y均为同维矩阵,X,Y,Z每一组相应列向量为坐标画出一条曲线,S为‘color﹣linestyle﹣marker’控制字符表1.6~表1.10. 【例1.79】绘制螺旋线. >>t=0:pi/60:10*pi; >>x=sin(t); >>y=cos(t); >>plot3(x,y,t,’*-b’) >>grid on 图形的结果如图1.16所示. 格式二:comet3(x,y,z). 说明:显示一个彗星通过数据x,y,z确定的三维曲线. 【例1.80】 >>t=-20*pi:pi/50:20*pi; >>comet3(sin(t),cos(t),t) 可见到彗星头(一个小圆圈)沿着数据指定的轨道前进的动画图象,彗星轨道为整个函数所画的螺旋线. 格式三:fill3(X,Y,Z,C) ℅填充由参数X,Y,Z确定的多边形,参数C指定颜色. 图1.16 例1.79图形结果图1.17 例1.81图形结果 【例1.81】

>>X=[2,1,2;9,7,1;6,7,0]; >>Y=[1,7,0;4,7,9;0,4,3]; >>Z=[1,8,6;7,9,6;1,6,1]; >>C=[1,0,0;0,1,0;0,0,1] >>fill3(X,Y,Z,C) >>grid on 图形的结果如图1.17所示. 问题1.30:图1.17中每个三角形按什么规律画出的?(用X,Y,Z的对应列元素值为坐标画三角形)每个三角形内填充的颜色又有何规律?(用C 第i列元素值对应的颜色,从第i个三角形对应顶点向中心过渡)若C=[1,5,10;1,5,10;1,5,10],结果如何? 2.三维网格图 格式:mesh(X,Y,Z,C) ℅画出颜色由C指定的三维网格图. meshc(X,Y,Z,C) ℅画出带有等高线的三维网格图. meshz(X,Y,Z,C) ℅画出带有底座的三维网格图. 说明:若X与Y均为向量,n=length(X),m=length(Y), Z必须满足[m,n]=size(Z),则空间中的点(X(j),Y(i),Z(i,j))为所画曲面网线的交点,X 对应于Z的列,Y对应于Z的行;若X,Y,Z均为同维矩阵,则空间中的点(X(i,j),Y(i,j),Z(i,j))为所画曲面的网线的交点;矩阵C指定网线的颜色,MATLAB对矩阵C中的数据进行线性处理,以便从当前色图中获得有用的颜色,若C缺省,网线颜色和曲面的高度Z相匹配. 在三维作图常用到命令meshgrid,其功能是生成二元函数z=f(x,y)中x-y平面上的矩形定义域中数据点矩阵X和Y. 格式:[X,Y]= meshgrid(x,y). 说明:输入向量x为x-y平面上x轴的值,向量y为x-y平面上y轴的值.输出矩阵X为x-y平面上数据点的横坐标值,输出矩阵Y为x-y平面上数据点的纵坐标值. 【例1.82】 >> x=1:4; >> y=1:5; >> [x,y]=meshgrid(x,y) x = 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 y = 1 1 1 1

Matlab绘图功能

第五章Matlab绘图功能 5.1 二维图形的绘制 5.1.1 常用的二维图形绘图函数 基本的二维绘图函数有 plot ——绘制2维曲线; title ——给图形加标题; grid ——显示网格线; xlabel ——给x轴加标记; ylabel ——给y轴加标记; text ——在坐标图中加入文字注释。 π的曲线图。 例:画出函数x =,其中x从0到π2步进100 yπ2 sin / X=0:pi/100:2*pi; Y=sin(X); plot(X,Y); % 作图 grid on; % 网格线显示,若该为grid off则不显示网格 ylabel('y=sin 2\pi x'); % Y轴标注,可以有汉字 xlabel('x'); % X轴标注,可以有汉字 title('function plot y=sin 2\pi x'); % 图标题 text(0.5,sin(0.5),'\leftarrow sin 2 \pi 0.5'); % text()可以在指定坐标处写文字标注 text(2.3,sin(2.3),'\leftarrow sin 2 \pi 2.3'); % 所有标注中均可使用汉字 % 对于特殊符号,如希腊字母,箭头等需要采用LaTeX格式 结果如图5.1 所示。

图5.1 基本的二维绘图函数用法 5.1.2 图形的线型和颜色控制 在命令plot的高级用法中,可以设置作图的线型,标记类型,线和标记的颜色,粗细等特征。用命令doc LineSpec和doc plot可以查询详细的帮助文档。 线型的定义如下: - solid line (default) 实线 -- dashed line 虚线 : dotted line 虚点连线 -. dash-dot line 点划线 常用标记的定义为: + plus sign 十字标记 o circle 小圈标记 * asterisk 星号标记 . point 黑点标记

上机习题6_MATLAB7.0三维绘图

实验六 MATLAB7.0三维绘图实验目的: ①掌握绘制三维图能形的方法; ②掌握图形修饰处理方法; ③知道图像处理方法,了解动画制作方法。 实验要求:给出程序和实验结果。 实验容: 一、绘制三维曲线 sin() cos() sin()cos() x t y t z t t t = ? ? = ? ?= ? 二、绘制三维曲面图z=sin(x+sin(y))-x/10。 三、绘制z=x2+y2的三维网线图形; 四、绘制三维陀螺锥面; (仅供参考: t1=0:0.1:0.9; t2=1:0.1:2; r=[t1 -t2+2]; [x,y,z]=cylinder(r,30); surf(x,y,z); grid ) 五、在xy平面选择区域[-8,8]×[-8,8],利用mesh、meshc、meshz和surf绘 制z= 六、绘制光照处理后的球面,取三个不同的光照位置进行比较。(提示:可以利用函数sphere和 light) 七、利用peaks产生数据,绘制多峰曲面图。 八. 2 2y x xe z- - =,当x和y的取值围均为-2到2时,用建立子窗口的方法在同一 个图形窗口中绘制出三维线图、网线图、表面图和带渲染效果的表面图。 九绘制peaks函数的表面图,用colormap函数改变预置的色图,观察色彩的分

布情况。 十、用sphere函数产生球表面坐标,绘制不透明网线图、透明网线图、表面图和带剪孔的表面图。 十一、将5.9题中的带剪孔的球形表面图的坐标改变为正方形,以使球面看起来是圆的而不是椭圆的,然后关闭坐标轴的显示。 实验结果: (1) (2)

(3) (4)

matlab plot画图

转)plot 画图 默认分类 2009-04-30 16:38:02 阅读116 评论0字号:大中小 第五讲计算结果的可视化 本节介绍MATLAB 的两种基本绘图功能:二维平面图形和三维立体图形。 5.1 二维平面图形 5.1.1 基本图形函数 plot 是绘制二维图形的最基本函数,它是针对向量或矩阵的列来绘制曲线的。也就是 说,使用plot 函数之前,必须首先定义好曲线上每一点的x 及y 坐标,常用格式为:(1)plot(x) 当x 为一向量时,以x 元素的值为纵坐标,x 的序号为横坐标值绘制 曲线。当x 为一实矩阵时,则以其序号为横坐标,按列绘制每列元素值相对于其序号的曲线, 当x 为m× n 矩阵时,就由n 条曲线。 (2)plot(x,y) 以x 元素为横坐标值,y 元素为纵坐标值绘制曲线。 (3)plot(x,y1,x,y2,…) 以公共的x 元素为横坐标值,以y1,y2,… 元素为纵坐标值绘 制多条曲线。 例5.1.1 画出一条正弦曲线和一条余弦曲线。 >> x=0:pi/10:2*pi; >> y1=sin(x); >> y2=cos(x); >> plot(x,y1,x,y2) 图5.1.1 函数plot 绘制的正弦曲线 在绘制曲线图形时,常常采用多种颜色或线型来区分不同的数据组,MATLAB 软件专 门提供了这方面的参数选项(见表5.1.1),我们只要在每个坐标后加上相关字符串,就可实 现它们的功能。 - 2 - 表5.1.1 绘图参数表 色彩字符颜色线型字符线型格式标记符号数据点形式标记符号数据点形式 y 黄- 实线. 点< 小于号 m 紫:点线o 圆s 正方形 c 青-. 点划线x 叉号 d 菱形 r 红- - 虚线+ 加号h 六角星 g 绿* 星号p 五角星 b 蓝v 向下三角形 w 白^ 向上三角形 k 黑> 大于号 例如,在上例中输入 >> plot(x,y1,'r+-',x,y2,'k*:')

matlab中画图的时各种设置

MATLAB 受到控制界广泛接受的一个重要原因是因为它提供了方便的绘图 功能.本章主要介绍2维图形对象的生成函数及图形控制函数的使用方法,还将简单地介绍一些图形的修饰与标注函数及操作和控制MATLAB各种图形对象的方法. 第一节图形窗口与坐标系 一.图形窗口 1.MATLAB在图形窗口中绘制或输出图形,因此图形窗口就像一张绘图纸. 2. 在MATLAB下,每一个图形窗口有唯一的一个序号h,称为该图形窗口的 句柄.MATLAB通过管理图形窗口的句柄来管理图形窗口; 3.当前窗口句柄可以由MATLAB函数gcf获得; 4.在任何时刻,只有唯一的一个窗口是当前的图形窗口(活跃窗口); figure(h)----将句柄为h的窗口设置为当前窗口; 5.打开图形窗口的方法有三种: 1)调用绘图函数时自动打开; 2)用File---New---Figure新建; 3)figure命令打开,close命令关闭. 在运行绘图程序前若已打开图形窗口,则绘图函数不再打开,而直接利用已 打开的图形窗口;若运行程序前已存在多个图形窗口,并且没有指定哪个窗 口为当前窗口时,则以最后使用过的窗口为当前窗口输出图形. 6.窗口中的图形打印:用图形窗口的File菜单中的Print项. 7.可以在图形窗口中设置图形对象的参数.具体方法是在图形窗口的Edit菜 单中选择Properties项,打开图形对象的参数设置窗口,可以设置对象的属 性. 二.坐标系 1.一个图形必须有其定位系统,即坐标系; 2.在一个图形窗口中可以有多个坐标系,但只有一个当前的坐标系; 3.每个坐标系都有唯一的标识符,即句柄值; 4.当前坐标系句柄可以由MATLAB函数gca获得; 5.使某个句柄标识的坐标系成为当前坐标系,可用如下函数:axes(h) h为指 定坐标系句柄值. 6.一些有关坐标轴的函数: 1)定义坐标范围:一般MATLAB自动定义坐标范围,如用户认为设定的不 合适,可用:axis([Xmin, Xmax, Ymin, Ymax]) 来重新设定; 29 2) 坐标轴控制:MATLAB的缺省方式是在绘图时,将所在的坐标系也画出 来,为隐去坐标系,可用axis off;axis on则显示坐标轴 (缺省值). 3)通常MATLAB的坐标系是长方形,长宽比例大约是4:3,为了得到一个 正方形的坐标系可用:axis square 4)坐标系横纵轴的比例是自动设置的,比例可能不一样,要得到相同比例 的坐标系,可用:axis equal 第二节二维图形的绘制 一. plot函数

最新matlab各种三维绘图及实例

1 Matlab绘制三维图形 2 三维曲线 3 plot3函数与plot函数用法十分相似,其调用格式为: 4 plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…,xn,yn,zn,选项n) 5 其中每一组x,y,z组成一组曲线的坐标参数,选项的定义和plot函数相同。6 当x,y,z是同维向量时,则x,y,z 对应元素构成一条三维曲线。当x,y,z是同7 维矩阵时,则以x,y,z对应列元素绘制三维曲线,曲线条数等于矩阵列数。 8 例绘制三维曲线。 9 程序如下: 10 t=0:pi/100:20*pi; 11 x=sin(t); 12 y=cos(t); 13 z=t.*sin(t).*cos(t); 14 plot3(x,y,z); 15 title('Line in 3-D Space'); 16 xlabel('X');ylabel('Y');zlabel('Z'); 17 18 三维曲面 19 1.产生三维数据 20 在MATLAB中,利用meshgrid函数产生平面区域内的网格坐标矩阵。其格21 式为: 22 x=a:d1:b; y=c:d2:d;

23 [X,Y]=meshgrid(x,y); 24 语句执行后,矩阵X的每一行都是向量x,行数等于向量y的元素的个数,25 矩阵Y的每一列都是向量y,列数等于向量x的元素的个数。 26 2.绘制三维曲面的函数 27 surf函数和mesh函数的调用格式为: 28 mesh(x,y,z,c):画网格曲面,将数据点在空间中描出,并连成网格。 29 surf(x,y,z,c):画完整曲面,将数据点所表示曲面画出。 30 一般情况下,x,y,z是维数相同的矩阵。x,y是网格坐标矩阵,z是网格点31 上的高度矩阵,c用于指定在不同高度下的颜色范围。 32 例绘制三维曲面图z=sin(x+sin(y))-x/10。 33 程序如下: 34 [x,y]=meshgrid(0:0.25:4*pi); %在[0,4pi]×[0,4pi]区域生成网格坐35 标 36 z=sin(x+sin(y))-x/10; 37 mesh(x,y,z); 38 axis([0 4*pi 0 4*pi -2.5 1]); 39 此外,还有带等高线的三维网格曲面函数meshc和带底座的三维网格曲面40 函数meshz。其用法与mesh类似,不同的是meshc还在xy平面上绘制曲面在z 41 轴方向的等高线,meshz还在xy平面上绘制曲面的底座。 42 例在xy平面内选择区域[-8,8]×[-8,8],绘制4种三维曲面图。 43 程序如下: 44 [x,y]=meshgrid(-8:0.5:8); 45 z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2+eps);

MATLAB的绘图功能

四MATLAB的绘图功能 视觉是人们感受世界、认识自然最重要的途径。人们很难直接从一大堆原始的离散数据中体会到它们的含义,用数据画出图形却能使人们用视觉器官直接感受到数据的许多内在本质。 MA TLAB一向注重数据的图形表示,并不断地采用新技术改进和完备其可视化功能。MA TLAB作为一个优秀的科技软件,在数据可视化方面也有上乘表现。MA TLAB可以给出数据的二维、三维乃至四维的图形表现。通过对图形线型、立面、色彩、渲染、光线、视角等的控制,可把数据的特征表现得淋漓尽致。MA TLAB提供了两个层次的图形命令:一种是对图形句柄进行的低级图形命令,另一种是建立在低级图形命令之上的高级图形命令。MA TLAB的图形功能很强,不但可以绘制一般函数的图像,而且可以绘制专业图形,如饼图、条形图等。 在本章介绍如何创建二维、三维图形及其控制输出的方法。 1.1 基本绘图函数 MA TLAB提供多个函数用于绘制图形,以向量或矩阵作为输入参数,绘制它们的图像。下面的列出了基本绘图函数。 表6-1基本绘图函数

1.2 二维图形的绘制 1.2.1 绘制二维图形的一般步骤 为了让读者对绘制图形的过程有一个宏观的了解,在这里先介绍绘制二维图形的一般步骤,具体细节将在后面的章节中进行展开。 绘制二维图形的一般步骤如下: (1)数据的准备:选定所要表现的范围 产生自变量采样向量 计算相应的函数值向量 典型指令:x=0:pi/100:2*pi; (2)选定图形窗及其子图的位置: 缺省时,打开Figure No.1,或当前窗,当前子图 可用指令指定图形窗号和子图号 典型指令:figure(1)%指定1号图形窗 subplot(2,2,2)%指定2号子团 (3)调用(高层)绘图指令:线型、色彩、数据点形 典型指令:plot(x,y,’-ro’)%用红色实线画曲线,其数据点类型为o (4)设置轴的范围与刻度、坐标分格线 典型指令:axis([0,inf,-1,1])%设置坐标轴的范围 grid on %画坐标分格线 (5)图形注释,包括:图名、坐标名、图例、文字说明等 典型指令:title(‘专家系统’)%图名 xlabel(‘’);ylabel(’y’)%轴名 legend(’sinx’,‘cosx‘)%图例 text(2,1,’y=sinx‘)%文字说明 (6)打印:图形窗上的直接打印选项或按键 利用图形后处理软件打印 采用图形窗选项或按键打印最简捷。 步骤1,3是最基本的绘图步骤。至于其他步骤,并不完全必须。 1.2.2 plot函数的调用格式 在二维曲线的绘图命令中,函数plot是最基本,最重要的二维图形命令,其它许多绘图命令都是在它的基础上形成的。 下面介绍plot的使用方法: 调用格式1plot(x,y) 功能绘制二元组x、y的曲线图形。 说明这里x为横坐标,y为纵坐标。若x、y是同规模的向量,则绘制一条曲线。 若x是向量而y是矩阵,则绘制多条曲线,它们具有相同的横坐标数据。 若x、y都是矩阵,则以它们对应的列构成二元组,绘制多条曲线。 调用格式2plot(y)

MATLAB三维绘图数据源分析及镂空研究_张玉叶

价值工程 0引言 一般而言,在标量空间,三维图形的表达难以实现,而MATLAB 具有有很好的三维数据可视化功能,尤其适用于矩阵运算。本文分析了在标量空间绘制三维图形时所需要的数据源是如何产生的,以及深入分析数据源的产生对于三维图形作“镂空”处理的意义。这个研究对于MATLAB 辅助实际应用研究具有重要的意义。 1三维绘图数据源产生分析 MATLAB 绘制三维图形的方法是用矩形网格来绘制曲面图形,meshgrid 指令就是在(x ,y )平面来产生矩形网格的,格式为:[X ,Y]=meshgrid (x ,y ) 其中, x ,y 为两个矢量,而X ,Y 为两个矩阵。而meshgrid 指令的作用就是将由矢量x 和y 定义的域转换成一个由两个数组X 和Y 组成的标量空间,以便于对形如z=f (x,y )的方程进行三维表达。输出数组X 的各值是由矢量x 的各值在y 轴上扩展成矢量y 的大小[1]。同样,输出数组Y 的各值是由矢量y 的各值在x 轴上扩展成矢量x 的大小。 >>x=-5:5;>>y=x ; >>[X,Y]=meshgrid (x,y ) X=-5-4-3-2-1012345-5-4-3-2-1012345-5-4-3-2-1012345-5-4-3-2-1012345-5-4-3-2-1012345-5-4-3-2-1012345-5-4-3-2-1012345-5-4-3-2-1012345-5-4-3-2-1012345-5-4-3-2-1012345-5-4-3-2-1012345 Y=-5-5-5-5-5-5-5-5-5-5-5-4-4-4-4-4-4-4-4-4-4-4-3-3-3-3-3-3-3-3-3-3-3-2-2-2-2-2-2-2-2-2-2-2-1-1-1-1-1-1-1-1-1-1-1000000000001111111111122222222222 33333333333 4444444444455555555555>>Z=X.^2+Y.^2;>>surf (X ,Y ,Z ) 程序提供了一维行向量x=[-5-4-3-2-1012345],将x 在y 的方向上扩展成y 大小,形成数组X ,同理程序提供了一维列向量y=[-5-4-3-2-1012345]’,将y 在x 的方 向上扩展成x 的大小, 形成数组Y,在x-y 平面[2] ,数组X 和数组Y 形成了数据点阵如图1所示,然后根据关系式:z=x 2+y 2计算每个数据点阵在空间中的高度,用surf 指令做出表面图形,如图2所示。 2镂空处理 2.1平面域镂空分析明确了3D 图形的数据来源,就可以对立 体图形的各个部分进行镂空处理。 如果要在图2的基础上对空间曲面图进行镂空,效果如图3所示,操作指令如下: >>x=-5:5;>>y=x ; >>[X,Y]=meshgrid (x,y );>>X(8:9,8:9)=nan*X (8:9,8:9);>>Y(8:9,8:9)=nan*Y (8:9,8:9);>>surf (X,Y,Z ) 根据指令段,数组X 的第8行到第9行, 第8列到第9列数据乘以一个非数nan ,数组Y 的第8行到第9行,第8列到第9列数据也乘以一个非数nan ,数据点阵发生了变化,如图4所示:进行绘 图时,含有非数的数据部分被忽略[3] ,即不被绘制。从立体效果来看,对空间表面图进行了镂空操作。 2.2镂空疑点对镂空后的立体图形进行视角修饰,即在绘图之间加上指令〉〉view (2),让方位角az=0o ,仰角el=90o ,即对图形进行俯视操作,数据源的变化如图5所示,不难发现一个问题,根据数据源变化,我们绘图的时候应该忽略X (8:9,8:9),对应忽略Y (8:9,8:9)四个点,根据俯视图,镂空的区域似乎应该如图6所示,问题在哪里呢? —————————————————————— —基金项目:2009年咸阳师范学院教研基金项目(09XSYK205)。作者简介:张玉叶(1979-),女,陕西礼泉人,讲师,研究方向为电子设计自 动化。 MATLAB 三维绘图数据源分析及镂空研究 Data Sources Analysis of 3D Painting on MATLAB and Study of Piercing Technology 张玉叶Zhang Yuye (咸阳师范学院物理与电子工程学院,咸阳712000) (College of Physics and Electronics Engineering ,Xianyang Normal University ,Xianyang 712000,China ) 摘要:分析了MATLAB 三维图形绘制时数据源产生的机理,并对立体图形处理中的“镂空”技术,从平面域到圆域,逐渐深入探索如何3D 体 图形进行任意镂空的技巧,并从这个切入点深刻理解三维图形数据源与图形本身的对应关系。 结论对于3D 图形数据源分析及可视化具有实际应用意义。 Abstract:The paper analyzes the production mechanism of the data sources of 3D paintings.Just for piercing technology,from plane area to circle area,gradually it explores how to arbitrarily pierce a 3D graphic.From this breakthroug point,the corresponding relationship between the 3D graphic data sources and the graphic itself has been understood deeply.The conclusion has practical sense in data resources analysis of 3D graphics and visualizition. 关键词:MATLAB ;meshgrid ;数据源;镂空Key words:MATLAB ;meshgrid ;data source ;piercing 中图分类号:TP391.41 文献标识码:A 文章编号:1006-4311(2010) 34-0174-02 ·174·

相关主题