MATLAB图形绘制.ppt

上传人:小飞机 文档编号:5439007 上传时间:2023-07-07 格式:PPT 页数:51 大小:500.50KB
返回 下载 相关 举报
MATLAB图形绘制.ppt_第1页
第1页 / 共51页
MATLAB图形绘制.ppt_第2页
第2页 / 共51页
MATLAB图形绘制.ppt_第3页
第3页 / 共51页
MATLAB图形绘制.ppt_第4页
第4页 / 共51页
MATLAB图形绘制.ppt_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《MATLAB图形绘制.ppt》由会员分享,可在线阅读,更多相关《MATLAB图形绘制.ppt(51页珍藏版)》请在三一办公上搜索。

1、第6章 MATLAB图形绘制,1,本章学习目标,熟练掌握MATLAB图形绘制的基本步骤和基本绘图命令熟悉绘图过程中曲线颜色、线型、数据点型的设置方法熟练掌握典型二维图形的绘制及标注方法掌握三维图形的基本绘制方法能够熟练绘制典型三维图形并对其进行标注,2,主要内容,6.1 MATLAB图形绘制基础6.2 二维图形的绘制6.3 三维图形的绘制,3,6.1 MATLAB图形绘制基础,1.MATLAB图形绘制的基本步骤 在MATLAB中,一般按照下述的几个步骤绘制图形。准备需绘制的数据或函数,常用典型指令如下。x=0:0.1:10;y1=bessel(1,x);y2=bessel(2,x);y3=be

2、ssel(3,x);,4,选择图形输出的窗口及位置,常用典型指令如下。figure(1)subplot(m,n,k)调用基本的绘图函数,常用典型指令如下。plot(x,y1,x,y2,x,y3)plot3(x,y,z,r:)设置坐标轴的范围、标记号和网格线,常用典型指 令如下。axis(0,10,-3,3)axis(x1,x2,y1,y2,z1,z2)grid on,5,用名称、图例、坐标名、文本等对图形进行注释,常用典型指令如下。xlabel(x)ylabel(y)title(图1)text(1,1,y=f(x)打印输出图形,常用典型指令如下。printdps2,6,在上述步骤中,(1)、(

3、3)是最基本、最常用的绘图步骤。一般情况下,由这两步所画出的图形已经具备足够的表现力,至于其他步骤,并不完全必需。步骤(2)一般在图形较多的情况下使用,比如要把几个图放到一起进行比较,此时可根据所作图形的个数对subplot(m,n,k)指令中的m、n进行赋值。步骤(4)、(5)的前后次序可按照指令的常用程度和复杂程度编排,用户可根据自己的需要改变前后次序。,7,2.MATLAB基本绘图命令 MATLAB提供了大量的指令用于将矢量数据以曲线图形的方式进行显示以及这些曲线图形的注释和打印。详见表6-1。plot指令的常用调用格式 plot(y,s)plot(x,y,s)plot(x1,y1,s1

4、,x2,y2,s2)h=plot(),8,其中的参数s是用来指定线型、色彩、数据点型的选项字符串。当其省略时,图形中的线型、色彩等将由MATLAB的默认设置确定。plot3指令的常用调用格式 plot3(x,y,z,s)plot3(x1,y1,z1,s1,x2,y2,z2,s2,)h=plot3()loglog、semilogx、semilogy函数的常用调用格式 这3个指令的调用格式和plot指令的格式形同,只不过显示的坐标轴比例不同。,9,plotyy指令的常用调用格式 plotyy(x1,y1,x2,y2)plotyy(x1,y1,x2,y2,f)plotyy(x1,y1,x2,y2,f

5、1,f2)指令中出现的参数f、f1、f2等代表绘制数据的方式,可选择plot、semilogx、semilogy、loglog等不同的形式。,10,6.2 二维图形的绘制1.二维图形的创建及曲线颜色、线型、数据点型设置 这里通过一个简单的例子引入图形创建过程。【例6-1】绘制正弦函数y=sin(x)的曲线。x=0:0.01:10;%定义采样向量,采样点步长为0.01,共计101个 y=sin(x);plot(x,y)%在二维坐标轴中按线性比例绘制二维图形 运行后结果如图6.3所示。,11,有时为了便于观察,可以在图形上加上网格,此时只需在上例程序后加上grid on即可。x=0:0.01:10

6、;y=sin(x);plot(x,y)grid on运行后结果如图6.4所示。,12,【例6-2】在一个图形窗口中绘制多条函数曲线。x=0:0.01:10;y1=sin(x);y2=x.*sin(x);%y2=xsinxy3=exp(2*cos(x);%plot(x,y1,x,y2,x,y3)运行后结果如图6.5所示。,13,MATLAB虽然会自动为每条曲线赋予不同的颜色以示区别,但有时却很难判断曲线和函数的对应关系,可以通过两种方法来解决这个问题。第一种方法,把这些曲线在同一个绘图窗口的不同区域分别显示,把例6-2程序修改如下。x=0:0.01:10;y1=sin(x);y2=x.*sin(

7、x);y3=exp(2*cos(x);subplot(2,2,1),plot(x,y1)%在第1个子图中显示y1 subplot(2,2,2),plot(x,y2)%在第2个子图中显示y2 subplot(2,2,3),plot(x,y3)%在第3个子图中显示y3,14,运行后结果如图6.6所示。程序中subplot(2,2,3),plot(x,y3)的含义是把绘图窗口划分成2行2列共4个区域(可同时显示4个子图),把y3显示在第2行第1列,即第3个子图的位置。此时,可以方便地区分y1、y2、y3并观察它们的形状。,15,另外一种方法,可以通过自定义曲线的颜色、线型等来区别不同的曲线。对例6-

8、2程序的最后一句修改如下plot(x,y1,r:,x,y2,g-,x,y3,b-.)运行后结果如图6.7所示 在图6.7中,用红色的虚线(在程序中用r:表示)表示函数y1,用绿色的双画线(在程序中用g-表示)表示函数y2,用蓝色的点画线(在程序中用b-.表示)表示y3。这样就能方便区分同一窗口中不同的曲线。,16,此外还可以在不同函数曲线上标注不同的数据点型以观察数据点。比如对例6-2程序的第一句及最后一句修改如下x=0:0.2:10;plot(x,y1,r:+,x,y2,g-d,x,y3,b-.o)修改第一句的目的是增加数据取值步长,以便于观察数据点。运行后结果如图6.8所示。在图6.8中,

9、y1上的数据点用加号表示,y2上数据点用菱形表示,y3上的数据点用圆形表示。,17,2.二维图形的标注 表6-3对常用的一些标注指令进行了归纳,我们通过一些例子来说明表6-3中各指令的功能。【例6-3】坐标轴及标题的标注。x=-10:0.1:10;%定义图形的横轴坐标范围及采样步长x=x+(x=0)*eps;%用一个“机器0”小数代替0 y=sin(x)./x;%用可逻辑运算的sin(esp)/esp近似代替sin(0)/0的极限plot(x,y)xlabel(x)%在x轴上标注xylabel(y=sinx/x)%在y轴上标注y=sinx/xtitle(门函数的频谱)%在图形上方添加标题,18

10、,【例6-4】在图形中添加文本字符串。x=0:0.1:10;y=sin(x);plot(x,y)xlabel(x)ylabel(y=sinx)text(0,sin(0),leftarrowsin(x)=0)%在指定位置添 加左箭头及字符串text(3*pi/4,sin(3*pi/4),rightarrowsin(x)=0.707)text(7*pi/4,sin(7*pi/4),leftarrowsin(x)=-0.707),19,如果在不要求精确定位的情况下对图形进行标注,还可以使用gtext指令实现以交互的方式将标注字符串放置在图形中。例如,在图6.8中的正弦曲线上执行下面的指令 gtext

11、(第一个零点)gtext(第二个零点)gtext(第三个零点)按回车键后打开图形窗口,当光标进入图形窗口时,会变成一个大十字,表明系统正在等待用户的动作。单击想要加入标注的地方即可。,20,【例6-5】图形的图例标注。x=linspace(0,2*pi,50);y1=cos(x);y2=sin(x);plot(x,y1,x,y2)xlabel(x的取值范围)ylabel(y1和y2的值)legend(y1=cos(x),y2=sin(x),21,3.典型二维图形的绘制 对数、半对数坐标轴图形的绘制 在有些时侯,需要的函数可能在两个坐标轴或某个坐标轴上有较大的取值范围,这时可以通过loglog、

12、semilogx、semilogy等指令在x轴和(或)y轴按对数比例绘制二维图形。,22,【例6-6】对数、半对数坐标轴图形的绘制。x=0:0.1:10;y=exp(x);subplot(1,3,1)%显示在第1个子图上plot(x,y)subplot(1,3,2)loglog(x,y)%在x轴和y轴都按对数比例绘制图形subplot(1,3,3)semilogy(x,y)%在x轴按线性比例、y轴按对数比例绘 制二维图形,23,双y轴图形的绘制 利用MATLAB的plotyy指令可以同时绘制两条函数曲线,这两条曲线共用一个x轴,而y轴则为两个,分别位于图形的左边和右边。这时,可以将具有不同取值

13、范围的两条函数曲线放到一个图形中,以便进行分析和比较。,24,【例6-7】双y轴图形的绘制。x=0:1000;a=1000;b=0.01;c=0.01;y1=a*exp(-b*x);y2=cos(c*x);plotyy(x,y1,x,y2,semilogy,plot),25,极坐标图的绘制 极坐标也是一种常用的坐标形式,在有些场合使用起来非常方便。极坐标图的绘制使用的指令是polar,其调用格式为polar(theta,rho,linespec),即用极角theta和极径rho画出极坐标图形,参量linespec则可以指定极坐标图中线条的线型、标记符号和颜色等。【例6-8】极坐标图的绘制。x=

14、0:0.01:2*pi;polar(x,sin(2*x).*cos(2*x),r:)title(八瓣玫瑰图),26,二维条形图的绘制 在MATLAB中,用指令bar和barh来绘制二维条形图,其中指令bar用来绘制垂直条形图,barh用来绘制水平条形图。指令的调用格式为 bar(x,y,width,style,linespec)或barh(x,y,width,style,linespec),其中的参数width代表条形的宽度,默认值为0.8,当width的值大于1时,条形将会出现交叠;参数style用来定义条形的类型,可选值为group或stack,其默认值为group,如选stack,则对m

15、n矩阵只绘制n组条形,每组一个条形,且条形的高度为这一列中所有元素的和;参数linespec用来定义条形的颜色。,27,【例6-9】垂直条形图的绘制。x=1 2 3;%定义条形的位置y=3 5 2;4 6 8;7 5 3;%定义条形的高度bar(x,y)【例6-10】绘制一个二维水平且堆叠的条形图。x=1 2 3;y=3 5 2;4 6 8;7 5 3;barh(x,y),28,二维区域图的绘制 区域图的绘制使用area指令,该指令用于在图形窗口中显示一段曲线,该曲线可由一个矢量生成,也可由矩阵中的列生成(其实在MATLAB中,矢量是矩阵的一种特殊形式,即列数为1的矩阵就是矢量)。如果矩阵的列

16、数大于1,则area指令将矩阵中每一列的值都绘制为独立的曲线,并且对曲线之间和曲线与x轴之间的区域进行填充。这种图形在MATLAB中就称为区域图。,29,【例6-11】根据矩阵数据来绘制区域图。A=1 2 3 4 2 4 6 8 3 5 7 3 7 5 3 2 6 3 2 1;area(A)%绘制区域set(gca,xtick,1:5)%设定x轴的标示grid on%显示网格set(gca,layer,top)%将网格显示在图形之上,30,二维饼图的绘制 在MATLAB中,饼图用来显示矢量或矩阵中的每个元素在其所有的总和中所占的百分比。绘制二维饼图的指令是pie。【例6-13】绘制一个二维饼图

17、。x=5 8 10 6;pie(x)如果x中的元素的和小于1,则绘制出来的就是一个不完整的饼图。例如x=0.1 0.25 0.4 0.15;pie(x),31,【例6-14】绘制一个具有分离切片的二维饼图。x=1 2 3 4;explode=0 0 1 1;%饼图中的第3、第4元素切片分离pie(x,explode)需要说明的是:指令explode中非零元素个数必须与x的维数相同,其中非零元素所对应的切片即为分离的切片。,32,【例6-15】绘制带有标注的二维饼图。x=12.5 26.2 18.6 18.9 31.4 20.3 17.2 29.7 21.5 11.0 32.2 17.8;%用3

18、列表示3种产业,用4行表示4个季度的产值s=sum(x);%对各列求和labels=第一产业 第二产业 第三产业;%饼图上3部分的标注 pie(s,labels),33,离散数据的图形绘制 离散数据的图形常见的有两种:枝干图和阶梯图。枝干图是将每个离散数据显示为末端带有标记符号的线条,所用指令是stem。在二维枝干图中,枝干线条的起点在x坐标轴上。【例6-16】二维枝干图的绘制。x1=0.5;x2=0.1;t=0:50;y=sin(x1*t).*exp(-x2*t);stem(t,y),34,图6.26中线型、颜色、数据点符号等都是MATLAB默认的。如果想自定义,则只需在调用stem指令时添

19、加相应参数。比如把例6-16最后一句程序修改如下 stem(t,y,:dr,fill)其表示的含义为:枝干图的枝干设置为虚线(即程序中参数:),数据点标示符设置为菱形(即程序中参数d,线条和标示符颜色设置为红色(即程序中参数r),且把标示符号填充为红色(即程序中参数fill)。,35,另外一种常见的离散数据图形是阶梯图。阶梯图以一个恒定间隔的边沿显示数据点,绘制阶梯图所用的是stairs指令。【例6-17】阶梯图的绘制。x=1:0.5:10;y=cos(x);stairs(x,y,-sr)%自定义线型、线条颜色和数据标示符号axis(0 10-1.2 1.2)%设置坐标轴的显示范围hold o

20、n plot(x,y,:)%画出y的连续曲线和阶梯图进行比较,36,37,二维轮廓图的绘制 MATLAB中的轮廓图是指将相对与某一平面具有同一高度的点连成一条曲线,该高度则由高度矩阵来反映。绘制二维轮廓图使用contour指令。【例6-18】绘制简单的轮廓图。x,y,z=peaks;contour(x,y,z,30),38,6.3 三维图形的绘制1.三维图形的基本绘制方法 MATLAB提供了丰富的函数来创建各种形式的三维图形。在MATLAB中,三维图形的绘制步骤及方法和前面介绍的二维图形差不多,只是一些绘图函数命令及图形修饰方法有所不同。三维图形绘制中比较常用的几个函数,详见表6-4。,39,

21、【例6-20】简单三维图形的绘制。t=0:pi/50:20*pi;x=sin(t);y=cos(2*t);z=sin(t)+cos(t);plot3(x,y,z,-rd)%绘制的函数曲线为红色实线,数据点 用菱形表示,40,【例6-21】绘制一个二元函数的表面图形。x,y=meshgrid(-8:0.5:8);z=sqrt(x.2+y.2)+eps;f=sin(z)./z;mesh(f)%绘制由线框构成的表面图形meshc(f)%绘制带有轮廓线的表面图形meshz(f)%绘制带有遮帘线的表面图形,41,2.典型三维图形的绘制三维条形图的绘制 在MATLAB中,用指令bar3和bar3h分别来绘

22、制三维垂直条形图和三维水平条形图。调用格式为bar3(x,y,width,style,linespec)和bar3h(x,y,width,style,linespec)。与二维条形图不同的是,参数style还可取detached,此时在x轴方向的各个实心块是彼此分离的。另外需要说明的是:三维条形图各组的实心块是沿着y轴分布的,而不同的组是沿着x轴排列的。,42,【例6-23】绘制一个分离的垂直三维条形图。x=0.5 1.5 3;y=3 5 2 4 8 5 2 6 7;bar3(x,y,detached)xlabel(x轴)ylabel(y轴)zlabel(z轴),43,在三维条形图中,可能会出

23、现若干实心块被遮挡的情况,比如,图6.36中y(3,1)即被遮挡。此时,可以设置参数group对图形进行分组,把所有的实心块都显示出来。比如,把上例中bar3(x,y,detached)修改为bar3(x,y,group)运行后结果如右图所示。,44,三维枝干图的绘制 在MATLAB中用stem3函数绘制起点在xy平面上的三维枝干图,其常用调用格式如下 stem3(z)stem3(x,y,z,linestyle or color or maket,fill)如果函数只带有一个矢量参数,则将只在x=1(当该参量为一个列向量时)或y=1(当该参量为一个行向量时)处绘制一行枝干图。,45,【例6-2

24、4】利用三维枝干图显示快速傅里叶变换的计算过程。t=(0:127)/128*2*pi;x=cos(t);y=sin(t);z=(abs(fft(ones(10,1),128);stem3(x,y,z,o)xlabel(实部)%在x轴标注“实部”ylabel(虚部)%在y轴标注“虚部”zlabel(幅值)%在z轴标注“幅值”title(频率响应)%在图形上方标注标题,46,如果想换个角度查看三维枝干图,则可先执行下面的指令 rotate3d on 然后就可以用鼠标拖动该三维枝干图,旋转到用户所希望的角度进行观察,如下图所示。,47,三维轮廓图的绘制 在MATLAB中用函数contour3来绘制三

25、维轮廓图,其调用格式及其中的各项参数设置与二维轮廓图的绘制相同。【例6-25】绘制一个带有标注的三维轮廓图。x,y,z=peaks;contour3(x,y,z,30)xlabel(x)ylabel(y)zlabel(z)title(具有30条轮廓线的peaks函数),48,表面图形的透明处理 在默认情况下,MATLAB将由mesh指令绘制的图形后面的所有线条均隐藏起来,包括没有添加颜色的小面后的线条。也就是说,通常所看到的表面图形都是不透明的。有时为了便于观察,可以使用hidden off指令将表面图形设置为透明的。需要说明的是:该指令对由surf指令绘制的图形没有任何影响。,49,【例6-26】三维图形的透明处理。x,y,z=sphere(30);surf(x,y,z)%绘制三维单位球面shading interp%采用插补明暗处理hold onx1=2*x;y1=2*y;z1=2*z;mesh(x1,y1,z1)%绘制由线框构成的半径为2的三维球面hidden off%对球面进行透明化处理axis equal,50,51,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号