matlab程序设计第3章.ppt
《matlab程序设计第3章.ppt》由会员分享,可在线阅读,更多相关《matlab程序设计第3章.ppt(258页珍藏版)》请在三一办公上搜索。
1、第三章 MATLAB图形系统,3.1 图形绘制3.2 图形标注3.3 对数和极坐标系中图形绘制3.4 复杂图形绘制3.5 坐标轴控制3.6 颜色控制 3.7 高级绘图函数 3.8 图形函数 习题,3.1 图 形 绘 制,这里以产生一个简单的正弦函数曲线为例来说明图形的绘制,这一过程在MATLAB中是很简单的。设要产生02之间的正弦函数,则可按下列步骤进行:(1)产生x轴、y轴数据 x=0:pi/20:2*pi;y=sin(x);(2)打开一个新的图形窗口 figure(1),(3)绘制出正弦曲线 plot(x,y,r-)其中r表示以红色实线绘制出正弦曲线。(4)给图形加上栅格线:grid on
2、这样就可以得到如图3.1所示的正弦曲线。从这一过程可以看出,在MATLAB中建立曲线图形是很方便的。,我们还可以将图形窗口进行分割,从而绘制出多条曲线。例如,将图形窗口分割成22的窗格,在每个窗格中分别绘制出正弦、余弦、正切、余切函数曲线,其MATLAB程序为x=0:pi/50:2*pi;k=1 26 51 76 101;x(k)=;删除正切和余切的奇异点figure(1),subplot(2,2,1)plot(x,sin(x),grid on 绘制正弦函数曲线subplot(2,2,2)plot(x,cos(x),grid on 绘制余弦函数曲线subplot(2,2,3)plot(x,ta
3、n(x),grid on 绘制正切函数曲线subplot(2,2,4)plot(x,cot(x),grid on 绘制余切函数曲线,图3.1 正弦曲线,执行后得到如图3.2所示的三角函数曲线。,图3.2 常用三角函数的曲线,3.2 图 形 标 注,绘制图形后,还要给图形进行标注。例如,可以给每个图加上标题、坐标轴标记和曲线说明等。给图3.1加上标题和轴标记,可输入title(sin(alpha)xlabel(alpha)ylabel(sin(alpha)则可以得到如图3.3所示的结果。这里alpha表示,取自于Tex字符集,详见附录A的text函数中的字符集。,图3.3 含标题的正弦曲线,利用
4、legend函数可对图中的曲线进行说明。例如,在同一张图上可得到y=x2和y=x3曲线,然后利用legend函数对曲线进行标注。MATLAB程序为x=2:.1:2;y1=x.2;y2=x.3;figure(1)plot(x,y1,r-,x,y2,k.),grid onlegend(ity=x2,ity=x3)title(y=x2和y=x3曲线)xlabel(x),ylabel(y),执行后得到如图3.4所示的曲线。从这一示例可以看出,MATLAB标注函数中可以采用中文字符,这极大地方便了用户。特别值得一提的是,在字符串中,“”表示上标,“_”表示下标。,图3.4 插图说明使用示例,利用text
5、函数也可以对曲线进行标注。例如,在同一张图上绘制出正弦和余弦曲线,则MATLAB程序为x=0:pi/50:2*pi;y1=sin(x);y2=cos(x);figure(1)plot(x,y1,k-,x,y2,k-),grid ontext(pi,0.05,leftarrow sin(alpha)text(pi/4-0.05,0.05,cos(alpha)rightarrow)title(sin(alpha)and cos(alpha)xlabel(alpha),ylabel(sin(alpha)and cos(alpha),图3.5 文本标注使用示例,3.3 对数和极坐标系中图形绘制,有时变
6、量变化范围很大,如x轴从0.01到100,这时如果仍采用plot绘图,就会失去局部可视性,因此应采用对数坐标系进行绘图。例如,求0.01100之间的常用对数(以10为底的对数),MATLAB程序为x=0.01:.01:100;y=log10(x);figure(1)subplot(2,1,1)plot(x,y,k-),grid ontitle(ity=log_10(x)in Cartesian coordinates),ylabel(y),subplot(2,1,2),grid onsemilogx(x,y,k-)半对数绘图title(ity=log_10(x)in Semi-log coor
7、dinates)xlabel(x),ylabel(y),图3.6 笛卡尔和对数坐标系中曲线的对比,对于任一矩阵,通过eig函数可求出其特征值,从而了解矩阵的特性,为此希望能够直观地显示出特征值。由于特征值一般为复数,因此可利用polar函数在极坐标系中进行表示。例如,输入:,a=randn(2,2);b=eig(a)c1=abs(b),c2=angle(b)figure(1)subplot(2,1,1)plot(b,rx),grid ontitle(Plot using Cartesian coordinates)subplot(2,1,2)polar(c2,c1,rx)gtext(Plot
8、using polar coordinates),在控制系统中,可以求出系统的零极点,然后利用polar函数在极坐标系中绘制出零极点图,直观地显示出系统的零极点,这有助于我们对控制系统进行深入了解。如输入MATLAB程序:num=1 1.1;den=1 2 5 7 4;z,p,k=tf2zp(num,den);c1=abs(z);c2=angle(z);c3=abs(p);c4=angle(p);figure(1)polar(c4,c3,bx)hold on,polar(c2,c1,ro)gtext(极坐标系中零极点的表示),图3.7 笛卡尔和极坐标系中特征值的表示,图3.8 极坐标系中系统零
9、极点的表示,3.4 复杂图形绘制,在同一个图形窗口中绘制多条曲线是MATLAB的一大功能,这可以有多种应用方法。第一种方法是将曲线数据保存在nm的矩阵y中,而x为相应的x轴向量n1或1n,则plot(x,y)命令可以在同一个图形窗口中绘制出m条曲线。这种方法非常适用于由其它软件产生的数据,然后由load命令读入到MATLAB中,并绘制出曲线。例如,MATLAB提供了一个多峰函数peaks.m,其函数表达式为,利用这一函数,可以方便地产生多条曲线的数据x,y=meshgrid(-3:0.15:3);产生4141的输入矩阵z=peaks(x,y);计算相应的峰值函数然后利用plot函数可直接绘制出
10、这41条曲线x1=x(1,:);plot(x1,z),grid on这时可得到如图3.9所示的多条曲线。,图3.9 多峰函数的多条曲线,绘制多条曲线的第二种方法是在同一个plot函数中分别指定每条曲线的坐标轴数据,即采用plot(x1,y1,x2,y2,)。例如,对于下列两个函数(这是神经网络中的两个重要函数:logsig和tansig):,可分别求出55之间的值,在同一张图上画出曲线,并利用legend函数对曲线进行说明,MATLAB程序为x=-5:.1:5;y1=1./(1+exp(-x);y2=(1-exp(-x).*y1;figure(1)plot(x,y1,r-,x,y2,b.),g
11、rid onlegend(logsig函数,tansig函数,4)title(多条曲线),图3.10 logsig和tansig函数曲线,绘制多条曲线的第三种方法是利用hold on命令。先在图形窗口中绘制出第一条曲线,然后执行hold on(保持原有图像元素)命令,最后绘制出第二条、第三条等曲线。例如,对于图3.10中的曲线,也可以采用下列的MATLAB程序获得:figure(1)plot(x,y1,r-)hold onplot(x,y2,b-)grid on,利用这种方法在绘制曲线后,可同时在数据点上以特殊记号进行标注。例如,在绘制出简单的正弦函数后,可以用圆圈表示各个数据点,程序如下:x
12、=0:pi/20:2*pi;y=sin(x);figure(1)plot(x,y,r-)hold onplot(x,y,bo),grid ontitle(sin(alpha)xlabel(alpha),ylabel(sin(alpha),图3.11 正弦曲线,利用plotyy函数可绘制出双y轴的图形,这样在同一张图上表示两条曲线时,可拥有各自的y轴。例如,在同一张纸上绘制出双y轴的y1=sin(t)和y2=2cos(t)函数,MATLAB程序为t=-pi:pi/20:pi;y1=sin(t);y2=2*cos(t);plotyy(t,y1,t,y2),grid ontitle(sin(t)an
13、d cos(t)text(0,0,leftarrow sin(t)text(pi/2,0,leftarrow 2cos(t),执行后可得到如图3.12所示的结果。图中左边轴为第一条曲线的垂直轴,右边轴为第二条曲线的垂直轴,从图中可以看出,虽然y1和y2具有不同的值域,但由于采用了双y轴,因此两条曲线在显示上具有相同的幅值。,图3.12 双y轴正余弦曲线,3.5 坐标轴控制,利用box函数可以控制图形的上边框和右边框,box on、box off可分别显示和隐去上边框和右边框,box命令为乒乓开关,可以在这两种状态之间切换。为了更加灵活地控制各个边框(坐标轴),可以采用axes命令。例如在0,p
14、i/2之间绘制出y=tan(x)曲线,然后利用box off命令去掉边框,MATLAB程序为x=0:.025:pi/2;y=tan(x);figure(1)plot(x,y,r-o),grid onbox offtitle(正切函数),xlabel(角度(弧度),图3.13 正切函数曲线,axis(与上面提到的axes不同)命令用于控制坐标轴的刻度。一般在绘制曲线时,系统会根据所采用的数据自动生成适当的坐标轴刻度,但有时需要进行修改,比如在两个曲线对比时,应采用相同的比例因子,以便直观地比较大小。设已由其它系统测量出两种方法的误差,保存于err.dat中,其中第一列为采样时刻,第二、三列分别为
15、两种方法的测量值。现直接绘制出误差曲线,同时绘制出利用axis修改成相同比例后的误差曲线。MATLAB程序为,load err.datt=err(:,1);e1=err(:,2);e2=err(:,3);figure(1)subplot(2,2,1),plot(t,e1,k),title(误差1)subplot(2,2,3),plot(t,e2,k),title(误差2)subplot(2,2,2),plot(t,e1,k),title(坐标轴调整后的误差1)axis(0.3-4 4)subplot(2,2,4),plot(t,e2,k),title(坐标轴调整后的误差2)axis(0.3-4
16、 4),图3.14 测量误差的比较,为了更清楚地观察曲线的局部特性,也可以修改坐标轴刻度,例如,对于一个复杂函数y=cos(tan(x),利用plot函数绘制出曲线时,在x=0.5附近区域几乎看不清楚。现在利用axis函数调整x轴的刻度,则可以比较清楚地看到这一局部区域。MATLAB程序为x=0:1/3000:1;y=cos(tan(pi*x);figure(1)subplot(2,1,1),plot(x,y)title(itcos(tan(pix)subplot(2,1,2),plot(x,y)axis(0.4 0.6-1 1);title(复杂函数的局部透视),axis equal可使绘制
17、图形的x、y轴等长,这样可以使绘制的圆成为真正的圆。例如:t=0:pi/20:2*pi;figure(1)subplot(2,2,1),plot(sin(t),cos(t)title(圆形轨迹)subplot(2,2,2),plot(sin(t),2*cos(t)title(椭圆形轨迹)subplot(2,2,3),plot(sin(t),cos(t),axis squaretitle(调整后的圆形轨迹)subplot(2,2,4),plot(sin(t),2*cos(t),axis squaretitle(调整后的椭圆形轨迹)执行后得到如图3.16所示的轨迹。,图3.15 复杂函数曲线的局部
18、透视,图3.16 调整前、后的圆轨迹,利用axis off命令可以关闭坐标轴的显示,产生不含有坐标轴的图形。例如:t=0:pi/20:2*pi;x,y=meshgrid(t);z=sin(x).*cos(y);figure(1)plot(t,z),axis(0 2*pi-1 1)box off,axis offtitle(无坐标轴和边框图形)执行后得到如图3.17所示的曲线。,图3.17 无坐标轴与边框的曲线,3.6 颜 色 控 制,在绘制曲线时可直接指定曲线的颜色,在标注文本如title,xlabel,ylabel,zlabel,text命令中,可利用文本特性Color来指定文本的颜色。例如
19、,下列的MATLAB程序可产生红色的曲线、绿色的标题、蓝色的x与y轴标注和黑色的曲线标注。,x=-pi:pi/20:pi;y=exp(-2*sin(x);figure(1)plot(x,y,r-),grid ontitle(绿色的标题(y=e-2sin(x),Color,g)xlabel(蓝色的x轴标注,Color,b)ylabel(蓝色的y轴标注,Color,b)text(0.6,3.8,leftarrow黑色的曲线标注,Color,k),图3.18 颜色控制,利用colormap函数可以改变每种颜色的色调,MATLAB提供了许多种不同用途的颜色板。为了进一步了解各种颜色板的颜色,可输入cm
20、ap=colormap;L=length(cmap);x=1:L;y=x*ones(size(x);figure(1)bar(x(1:2),y(1:2,:)title(gray颜色板的颜色)colormap(gray),图3.19 gray(灰度)颜色板的颜色,MATLAB专门提供了人体脊骨的图像数据(spine),利用bone颜色板可更清晰地显示这一类图像。MATLAB程序为load spineimage(X)colormap bonetitle(人体脊骨图)执行后得到如图3.20所示的人体脊骨图。,图3.20 人体脊骨图,3.7 高级绘图函数,除了前面介绍的以二维平面为图形窗口的绘图功能外
21、,MATLAB还提供了一些功能很强的高级绘图函数,如表3.1所示,这里分类给出一些函数的使用说明。,表3.1 高级绘图函数,3.7.1 区域、条形及其饼图1.bar,barh功能:绘制出条形图。格式:bar(Y)bar(x,Y)bar(,width)bar(,style)bar(,bar_color),说明:bar和barh函数可在二维平面上绘制出条形图,它以条形块来表示数值的大小。bar函数绘制出的条形图呈竖直方向,barh函数绘制出的条形图呈水平方向,其应用格式完全一致,因此,这里仅给出bar函数的说明。bar(Y)可以绘制出Y的条形图,当Y为矩阵时,则bar函数将由每行元素产生的条形聚合
22、成组。当Y为向量时,x轴的范围为1,length(Y);当Y为矩阵时,x轴的范围为1,size(Y,1)。bar(x,Y)可以指定x轴坐标,向量x中的值可以是非单调的,但不能包含重复的值。当Y为矩阵时,则在x位置上对Y每行元素产生的条形进行聚合。,bar(,width)可以设定各个条形的宽度,并且可以控制组内条形的分割,缺省的宽度为0.8。bar(,style)可以指定条形的风格:grouped、stacked,缺省值为grouped。当style取grouped,表示分组绘制条形图,即Y中每一行为一组,分别按不同颜色绘出条形图;取stacked,表示将每组中的值分段以不同颜色绘制出条形图,即
23、每一行中的值一个接一个绘制在同一个条形块中。bar(,bar_color)可以指定条形块的颜色。例如输入x=-2.9:0.2:2.9;bar(x,exp(-x.*x),r)title(条形图ity=e-x2),图3.21 简单的条形图,例如,利用随机函数rand产生一个矩阵,这样可以得到更复杂的条形图。MATLAB程序为Y=round(rand(5,3)*10);figure(1)subplot(2,2,1),bar(Y,group),title Groupsubplot(2,2,2),bar(Y,stack),title Stacksubplot(2,2,3),barh(Y,stack),t
24、itle Stacksubplot(2,2,4),bar(Y,1.5),title Width=1.5,图3.22 复杂的条形图,2bar3,bar3h功能:绘制出三维条形图。格式:bar3(Y)bar3(x,Y)bar3(,width)bar3(,style)bar3(,bar_color)说明:bar3和bar3h函数可在三维空间上绘制出条形图,它以条形块来表示数值的大小。其它说明类似于bar、barh函数。,例如,执行下面程序可以得到如图3.23所示的三维条形图。Y=cool(7);subplot(2,2,1)bar3(Y,detached)title(Detached)subplot(
25、2,2,2)bar3(Y,0.25,detached)title(Width=0.25)subplot(2,2,3)bar3(Y,grouped)title(Grouped)subplot(2,2,4)bar3(Y,stacked)title(Stacked)colormap(1 0 0;0 1 0;0 0 1),图3.23 三维条形图,3.pie功能:绘制出饼图。格式:pie(X)pie(X,explode)pie(,labels)说明:pie(X)可以将X中的数据绘制出饼图;Pie(x,explode)可利用explode指定分离出的切片;pie(,labels)可以为每个切片添加文本标注
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 程序设计
链接地址:https://www.31ppt.com/p-5575700.html