《Matlab二维数组与其应用.pdf》由会员分享,可在线阅读,更多相关《Matlab二维数组与其应用.pdf(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、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 的图形加网格和标注
2、。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,双对数 loglo
3、g,例:绘制数组 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.多重曲线绘图(Multi
4、ple 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(
5、3,:)=pi/2:pi/50:2*pi+pi/2;y=sin(x(1,:);plot(x,y)(c)x 和 y 是同样大小的矩阵时,plot(x,y)绘制 y 矩阵中各列对应于 x 各列的图形。例 3: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(:,1)=sin(x(:,1);y(:,2)=0.6*sin(x(:,1);y(:,3)=0.3*sin(x(:,1);plot(x,y)这里 x 和 y 的尺寸都是 1013,所以画出每条都是 101 点组成的三条曲线。如行列转置后就会画
6、出 101 条曲线,每条线由三点组成。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(1,:)=sin(x(1,:);y(2,:)=0.6*sin(x(1,:);y(3,:)=0.3*sin(x(1,:);plot(x,y)(d)如果 y 是矩阵,则 plot(y)绘出 y 中各列相对于行号的图形,对于 n 行矩阵,x 轴的坐标为1:n。(2)多组变量绘图(Multiple group variables plotting):对于一系列相应的矩阵 yi 和 xi,可以使用多组变量绘图法:
7、plot(x1,y1,x2,y2,xn,yn),这种方法的优点是允许将不同大小的矩阵或矢量的图形绘制在一张图上。例:多组变量绘图。x=0:pi/50:2*pi;y1=sin(x);y2=0.6*sin(x);y3=0.3*sin(x);plot(x,y1,x,y2,x,y3)(3)双 y 轴绘图:plotyy,在一个图形窗口绘制两组数据曲线,共用一个 x 轴,图形两边各有一个 y 轴。两条图线可以调用不同的绘图方法。例 1:x=0:0.3:12;y=exp(-0.3*x).*sin(x)+0.5;plotyy(x,y,x,y,plot,stem)左侧 y 轴对应 plot 形式的绘图,右侧 y
8、 轴对应 stem 形式的曲线。例 2:对于 y 坐标不同的情况。t=0:900;A=1000;a=0.005;b=0.005;z1=A*exp(-a*t);z2=sin(b*t);plotyy(t,z1,t,z2,semilogy,plot)3.图线形式和颜色(Style and color of plot)(1)图线的形式:(style of plot)MATLAB 提供的四种线形,实线 虚线-,冒号线 :,点划线-.标记点类型:.,+,*,o,s(或 square),d(或 diamond),p(或pentagram),h(或 hexagram),plot(x,y,),plot(x1,y
9、1,:,x2,y2,*)例 1:选择不同的线形绘图。t=0:pi/100:2*pi;y=sin(t);y2=sin(t-0.25);y3=sin(t-0.5);plot(t,y,-,t,y2,-,t,y3,:)例 2:选择不同的标记点绘图。t=0:pi/20:2*pi;x=t.3;y=sin(t);plot(x,y,o)(2)线的颜色(color of plot):MATLAB 中可选的颜色:红 r,绿 g,蓝 b,黄 y,粉红 m,青 c(cyan)黑 k.例:t=0:pi/20:2*pi;y=sin(t);plot(x,y,r),plot(x,y,g+)(3)图线的其他属性(other c
10、haracters of plot):可设置图线的宽度、标记点的边缘颜色、填充颜色、标记点的大小等。例:设置图线的线形、颜色、宽度、标记点的颜色及大小。t=0:pi/20:pi;y=sin(4*t).*sin(t)/2;plot(t,y,-bs,LineWidth,2,MarkerEdgeColor,k,MarkerFaceColor,y,MarkerSize,10)4.复数绘图(Complex plotting):plot 用于函数绘制复数的图形时,通常虚部是被忽略的。但 plot 只作用于单个复变量 z 时,则绘出的是实部对虚部的关系图(复平面上的一组点)。即这时 plot(z)等价于 p
11、lot(real(z).例:画一个 20 边的多边形(用 exp 函数生成),顶角用小圆圈表示。t=0:pi/10:2*pi;plot(exp(i*t),o);axis(square)如果在复平面绘制多重线,只能分别以实部和虚部为坐标来绘制,否则虚部将被忽略,并给出警告。二 图形的控制与表现(Figure control and representation)MATLAB 提供的用于图形控制的函数和命令:axis:人工选择坐标轴尺寸.clf:清图形窗口.ginput:利用鼠标的十字准线输入.hold:保持图形.shg:显示图形窗口.subplot:将图形窗口分成 N 块子窗口。1 图形窗口(f
12、igure window)(1).图形窗口的创建和选择(Creating and selecting of figure window)figure(n)函数用于为当前的绘图创建图形窗口,每运行一次 figure 就会创建一个新的图形窗口,n 表示第个 n 窗口,如果窗口定义了句柄,也可以用 figure(h)将句柄 h 的窗口作为当前窗口。clf 命令用于清除当前图形窗口中的内容。shg 命令用于显示当前图形窗口。(2).在一个图形窗口中绘制多个子图形(Drawing several subfigures in a single window)subplot(m,n,p),把窗口分成 mn
13、个小窗口,并把第 p 个窗口当作当前窗口。例:将 4 个图形显示在同一个图形窗口中。t=0:pi/20:2*pi;x,y=meshgrid(t);subplot(2,2,1);plot(sin(t),cos(t);axis equal subplot(2,2,2);z=sin(x)+cos(y);plot(t,z);axis(0 2*pi 2 2)subplot(2,2,3);z=sin(x).*cos(y);plot(t,z);axis(0 2*pi 1 1)subplot(2,2,4);z=sin(x).2-cos(y).2;plot(t,z);axis(0 2*pi 1 1)(3).在一
14、个已有的图形上绘图(Drawing a figure on the figure was existed):用 hold on 命令在一个已有的图形上继续绘图,使用 hold off 命令结束继续绘图。例:将 peaks 函数的等高线图与伪彩色画在一起。x,y,z=peaks;%产生双变量数组 contour(x,y,z,20,k)%绘制等高线 hold on pcolor(x,y,z)%绘制伪彩色图 shading interp%表面色彩渲染 hold off 2 坐标轴控制命令(Axis control commands)控制坐标性质的 axis 函数的多种调用格式:axis(xmin x
15、max ymin ymax):指定二维图形 x 和 y 轴的刻度范围,axis auto 设置坐标轴为自动刻度(缺省值)axis manual(或 axis(axis))保持刻度不随数据的大小而变化 axis tight 以数据的大小为坐标轴的范围 axis ij 设置坐标轴的原点在左上角,i 为纵坐标,j 为横坐标 axis xy 使坐标轴回到直角坐标系 axis equal 使坐标轴刻度增量相同 axis square 使各坐标轴长度相同,但刻度增量未必相同 axis normal 自动调节轴与数据的外表比例,使其他设置失效 axis off 使坐标轴消隐 axis on 显现坐标轴(1)
16、坐标轴的范围(Domain of coordinates axis):二维图形坐标轴范围在缺省状态下是根据数据的大小自动设置的,如欲改变,可利用axis(xmin xmax ymin ymax),函数来定义。例:定义坐标轴范围对观察图形的影响。x=0:.01:pi/2;figure(1);plot(x,tan(x),-ro)%ymax=tan(1.57),而其他数据都很小,结果将%使图形难于进行观察和判断。figure(2);plot(x,tan(x),-ro);axis(0,pi/2,0,5)%对坐标轴的范围进行控制就可得到较满意的绘图结果(2)显示比例对绘图结果的影响(Effect of
17、display scaling on plotting results)例:比较(Default,axis square,axis equal,axis tight)几种不同的显示方式的显示效果。t=0:pi/20:2*pi;figure(1);subplot(2,1,1);plot(sin(t),2*cos(t);grid on%缺省状态下的图形比例 subplot(2,1,2);plot(sin(t),2*cos(t);axis square;grid on%正方形的显示比例 figure(2)subplot(1,2,1);plot(sin(t),2*cos(t);axis equal;g
18、rid on%具有相等的刻度比例 subplot(1,2,2);plot(sin(t),2*cos(t);axis tight;grid on%紧缩形式 3 图形标注(Marking on the figure):MATLAB 的图形标注方法(表 67)title 标题,xlabel x 轴标注,ylabel y 轴标注,text 任意定位的标注 gtext 鼠标定位标注,legent 标注图例 图形标注可以使用字母,数字,汉字或按规定的方法表示希腊字母,如pi 表示 ,leq 表示,rm表示后面的字恢复为正体字,it表示斜体字,FontSize表示字体的大小,FontName表示字体的类型等
19、。可以使用图形窗口的 Insert 菜单,也可以使用属性编辑器,还可以使用函数输入的方法加标注,以下介绍相关函数的使用方法。(1).加注坐标轴标识和图形标题(Add axis labels and title of figure)加注坐标轴标识:xlabel(s),ylabel(s)图形标题:title(s)例:加注坐标轴标示和图形标题。t=0:pi/100:2*pi;y=sin(t);plot(t,y)axis(0 2*pi,-1 1)xlabel(0 leq itt rm leq pi,FontSize,16)ylabel(sin(t),FontSize,20)title(正弦函数图形,F
20、ontName,隶书,FontSize,20)(2).图中加注文本(Add text in the figure)text(x,y,字符串)例:在上图中加语句。t=0:pi/100:2*pi;y=sin(t);plot(t,y)axis(0 2*pi,-1 1)xlabel(0 leq itt rm leq pi,FontSize,16)ylabel(sin(t),FontSize,20)title(正弦函数图形,FontName,隶书,FontSize,20)text(3*pi/4,sin(3*pi/4),leftarrowsin(t)=0.707,FontSize,16)text(pi,s
21、in(pi),leftarrowsin(t)=0,FontSize,16)text(5*pi/4,sin(5*pi/4),sin(t)=-0.707rightarrow,FontSize,16,.HorizontalAlignment,right)句中:leftarrow 表示加一个向左的箭头 rightarrow 表示加一个向右的箭头 HorizontalAlignment 表示右对齐水平排列 gtext 函数用于在图形窗口上用鼠标直接在指定的位置上加注文本,调用格式:gtext(字符串)例:t=0:pi/100:2*pi;y=sin(t);plot(t,y)axis(0 2*pi,-1 1
22、)xlabel(0 leq itt rm leq pi,FontSize,16)ylabel(sin(t),FontSize,20)title(正弦函数图形,FontName,隶书,FontSize,20)gtext(MATLAB)(3).指定 TeX 字符 例:在标题中指定 TeX 字符 t=0:pi/100:2*pi;alpha=-0.8;beta=15;y=sin(beta*t).*exp(alpha*t);plot(t,y)title(itAe-italphaittsinitbetaittitalphaitbeta)xlabel(时间mus.),ylabel(幅值)在 title 中的
23、字符串表现的是 Aet sint itAe-italphaitt sinitbetaittitalphaitbeta 斜体 Ae 上标斜体 t 斜体 t 斜体 斜体 4.在图形中添加图例框(Add legend in the figure)legend(字符串 1,字符串 2,)例:在当前图形中添加图例说明。x=0:pi/10:2*pi;y1=sin(x);y2=0.6*sin(x);y3=0.3*sin(x);plot(x,y1,x,y2,-o,x,y3,-*)legend(曲线 1,曲线 2,曲线 3)legend(boxoff)legend 函数的其他功能见(表 68)三 特殊图形(Sp
24、ecial figure)1 条形图(Bar figure):bar(y),bar(x,y),barh,bar3(y),bar3(x,y),bar3h(x,y)(1)二维条形图:bar(y),bar(x,y),barh,(a).如果 y 是矢量,bar(y)绘制最简单的条形图,每一个条形图的位置由 y 元素的下标决定,高度由 y 元素的大小决定。例 1:a=1 3 5;4 3 7;2 8 4;bar(a)(b)当 y 是 mn 阶的矩阵时,bar(y)绘制的条形图以分组或叠加的形式表现。矩阵中每一行元素绘制在一组中,每一列元素绘制在每组中相对应的位置上(各组中同样颜色的条形表示同一列数据)。例
25、 2:y=9 8 6;2 5 8;6 2 9;5 8 7;9 4 2;bar(y)例 3:绘制分组形式的水平条形图。y=9 8 6;2 5 8;6 2 9;5 8 7;9 4 2;barh(y)例 4:绘制叠加形式的条形图。y=9 8 6;2 5 8;6 2 9;5 8 7;9 4 2;bar(y,stack)例 5:绘制叠加形式的水平条形图。y=9 8 6;2 5 8;6 2 9;5 8 7;9 4 2;barh(y,stack)(b)使用 bar(x,y)绘制指定 x 坐标的条形图,其中 x 必须是矢量,用于确定各组条形图的位置。例 1:指定 x 坐标的二维条形图,x=1 2 4 7 10
26、;y=9 8 6;2 5 8;6 2 9;5 8 7;9 4 2;bar(x,y)例 2:指定 x 坐标的水平二维条形图,x=1 2 4 7 10;y=9 8 6;2 5 8;6 2 9;5 8 7;9 4 2;barh(x,y)例 3:绘制指定 x 坐标的叠加形式的二维条形图。x=1 2 4 7 10;y=9 8 6;2 5 8;6 2 9;5 8 7;9 4 2;bar(x,y,stack)如果 y 也是矢量,对应每一个 x 坐标有一个条形,条形的高度表示了矢量 y 元素的大小。例 4:x=0:pi/10:2*pi;y=sin(x);bar(x,y)(2).三维条形图:bar3(y),将
27、mn 阶的矩阵绘制成分布在三维空间中的柱体,有分组形式和分列形式两种。例 1:分组形式的三维条形图。y=9 8 6;2 5 8;6 2 9;5 8 7;9 4 2;bar3(y,group)例 2:分列形式的三维条形图。y=9 8 6;2 5 8;6 2 9;5 8 7;9 4 2;bar3(y)(3)条形图中的图形叠加:通过在相同的位置创建一个与原来条形图中的坐标轴相对独立的新的坐标轴实现条形图的叠加。例:有两组实验数据,一组表示物质成分(TCE),一组表示温度(temp),数据是在 35 天中每隔 5 天的采样,将物质成分和温度与时间的关系画在一张图中。TCE=515 420 370 25
28、0 135 120 60 20;%实验数据 temp=29 23 27 25 20 23 23 27;days=0:5:35;%采样天数 bar(days,temp,c)%温度与时间的条形图 xlabel(Day)ylabel(Temperature(oC)h1=gca;%获取当前轴对象句柄 h2=axes(position,get(h1,position);%建立新的与 h1 位置相同的对象句柄 plot(days,TCE,LineWidth,3)%在以为句柄的坐标对象上绘制物质成分与时间的关系曲线 set(h2,YaxisLocation,right,color,none,Xticklab
29、el,)%设置句柄为 h2 的坐标轴对象的 y 轴为右侧。set(h2,Xlim,get(h1,Xlim),Layer,top)%设置句柄为 h2 的坐标轴对象的 x 轴的范围与句柄为 h1 的%坐标轴对象轴的范围相同。text(11,380,Concentration,Rotation,-55,FontSize,16)%在坐标为 11,380 的位置以旋转-55%的方向书写 concentration ylabel(TCE Concentration(PPM)title(Bioremediation,FontSize,16)饼图(pie):用于表示矢量或矩阵中各元素所占有的比例。,函数 pi
30、e 和 pie3 提供平面饼图和三维饼图的绘图功能。*pie(x)使用 x 中的数据绘制饼图,x 中的每一个元素用饼图中的一个扇区表示。*pie(x,explode)将一些扇区从饼图中分离出来,explode 为一个与 x 尺寸相同的矩阵,其非零元素所对应的 x 矩阵中的元素从饼图中分离出来。(1)不分离饼图:pie(x)例 1:不分离饼图:x=5.5 74.7 44.5 33.2 46.6;pie(x)(2)带分离切块的饼图:在矢量 x 的后面加一个与 x 相同长度的矢量,该矢量中所有不为 0的元素所对应的矢量 x 中的切块将被分离出来。例 2:x=5.5 74.7 44.5 33.2 46
31、.6;pie(x,0 0 0 0 1)%分离第 5 块(3)不完整的饼图:当 x 的全部元素之和小于 1 时绘制的是不完整饼图。例 3:x=0.2 0.3 0.4;pie(x)(4)三维饼图:有一定厚度的饼图,由函数 pie3 实现,调用方法与二维饼图相同。例:带分离切块的三维饼图。pie3(1 2 3 4 5,0 1 0 1 0)3.其他图形(Other figures):MATLAB 有 20 多种特殊图形的绘制方法,下述为常用方法。(1)直方图(hist):一种统计运算的结果,它的横轴是数据的幅度,纵轴是对应于各个幅度数据出现的次数,直方图没有负数。例 1:直角坐标系下矢量的直方图。yn
32、=randn(10000,1);figure(1)hist(yn)%缺省状态下画 10 个条形 figure(2)hist(yn,20)%可以设置 n 个条形个数 例 2:直角坐标系下的三维数组的直方图。y=randn(10000,3);figure(1)hist(y)%缺省状态下画 10 个条形 figure(2)hist(y,20)%hist(y,n)可以设置条形个数为 n(2)用杆状图表现离散数据 例 1:二维杆状图。x=0:0.2:10;y=exp(-0.3*x).*sin(x);figure(1);stem(x,y)figure(2);stem(x,y,:sr)%可用字符串改变线形、
33、标记点形状和颜色 例 2:用三维杆状图表现复平面快速傅立叶变换计算。th=(0:127)/128*2*pi;x=cos(th);y=sin(th);f=abs(fft(ones(10,1),128);stem3(x,y,f,d,fill)xlabel(实部);ylabel(虚部);zlabel(幅值)title(频率响应幅值)例 2:用三维杆状图与其他图形的叠加表现拉普拉斯变换基函数。t=0:0.1:10;s=0.1+i;y=exp(-s*t);%计算延迟指数 stem3(real(y),imag(y),t,m);hold on hline=(plot3(real(y),imag(y),t,k
34、)%返回三维曲线图的句柄 hold off;set(hline,LineWidth,3)%设置线宽 xlabel(实部);ylabel(虚部);zlabel(幅值)(3)阶梯图 阶梯图的表现方法:调用函数 stairs(x,y),每一阶梯的起始点为矢量 y 的数据点。(STAIRS(X,Y)draws a stairstep graph of the elements in vector Y at the locations specified in X.The X-values must be in ascending order and evenly spaced.)例:绘制函数 阶梯图。
35、alpha=0.01;beta=0.5;t=0:10;f=exp(-alpha*t).*sin(beta*t);stairs(t,f);hold on;plot(t,f,:*)%绘制虚线图以说明阶梯图阶梯起始点的位置 hold off;label=函数 e-(alpha*t)sinbeta*t 的阶梯图;text(0.5,-0.2,label,FontSize,14);xlabel(t=0:10,FontSize,14);axis(0 10-1.2 1.2)(4)彩色分散点图(Color scatter figure)彩色分散点图函数:scatter(x,y,c,s)x,y 为两个矢量,用于定位数据点,s 为绘图点的大小,c 为绘图所使用的色彩,s 和 c 均可以以矢量或表达式形式给出,s 和 c 为与 x 或 y 同长度的矢量时标记点尺 寸和颜色将按线性规律变化。在 scatter 函数的前 4 各参数之后还可以增加第五个参数 filled,表示填充绘图点。Scatter 与 plot 的最大差别在于 Scatter 可以绘制变尺寸、变颜色的点图。