1、第六章 图形处理功能Chapter 6: The function of Image processingMATLAB 提供了大量用于将矢量数据以曲线图形方式进行显示的函数,包括用于实现图表绘制、科学曲线绘制和各种专业数据可视化显示的二维图形绘制函数;用于表示向量场的数据及二元函数图形表达的三维图形绘制函数;提供了用于图形效果高级处理的相关函数以及图形句柄操作函数;柱状图、饼图和直方图等特殊图形绘制函数;动画制作等丰富的3D 可视化功能。一 二维图形(Two dimensional plotting)1. 基本绘图函数(Basic plotting function):Plot, semilo
2、gx, 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). 双矢量绘图(Do
3、uble 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
4、,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)用不同的颜色绘制
5、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)(c) x 和 y 是同样大小的 矩阵时, plot(x,y)绘制 y 矩阵
6、中各列对应于 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 点组成的三条曲线。如行列转置后就会画出 101 条曲线,每条线由三点组成。0 2 4 6 8 10 12 14-1-0.8-0.6-0.4-0.200.20.40.60.81x(1,:)
7、=0:pi/50:2*pix(2,:)=pi/4:pi/50:2*pi+pi/4x(3,:)=pi/2:pi/50:2*pi+pi/2y(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。x=pi;y=sin(x) cos(x)+9 x2;x3+8 sin(x)*2 3+15*x;x4-x2 x3-2 6*x+cos(x)plot(y)(2)多组变量绘图( Multiple group variab
8、les plotting):对于一系列相应的矩阵 yi 和 xi, 可以使用多组变量绘图法:plot(x1,y1,x2,y2,xn,yn),这种方法的优点是允许将不同大小的矩阵或矢量的图形绘制在一张图上。例:多组变量绘图。x1=0:pi/50:2*pi;y1=sin(x1);x2=0:pi/50:3*pi;y2=0.6*cos(x2);x3=0:pi/50:4*pi;y3=0.3*sin(x3);plot(x1,y1,x2,y2,x3,y3)(3)双 y 轴绘图:plotyy, 在一个图形窗口绘制两组数据曲线,共用一个 x 轴,图形两边各有一0 2 4 6 8 10 120120120 100
9、 200 300 400 500 600 700 800 900101102103-1-0.8-0.6-0.4-0.200.20.40.60.81个 y 轴,两条图线可以调用不同的绘图方法。例 1: plotyy 实现双 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)例 2:调用 plotyy 实现不同的绘图方法 x=0:0.3:12;y1=exp(-0.2*x).*sin(x)+0.5;y2=exp(-0.4*x).*cos(x)+1;plotyy(
10、x,y1,x,y2,plot,stem) 左侧 y 轴对应 plot 形式的绘图,右侧 y 轴对应 stem 形式的曲线。3. 图线形式和颜色 (Line Specification)Line specification string syntaxplot(X1,Y1,LineSpec,.,Xn,Yn,LineSpec)1) 图线的形式: (Line Style Specifiers)MATLAB 提供了四种线形:实线 (Solid line (default),虚线- -( Dashed line), 冒号线 :(Dotted line),,点划线 (Dash-dot line)2) 标记点
11、类型:( Marker Specifiers) MATLAB 绘图函数中可选的标记点形式有 13 种,可在 plot 函数中确定 . Point, + Plus sign, *Asterisk, o Circle, Cross, s square or s , d diamond or d , Upward-pointing triangle, Downward-pointing triangle, Right-pointing triangle, p pentagram , Five-pointed star, h hexagram Six-pointed star ,例 1:选择不同的线形
12、绘图。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) %确定标记点形式 3) 标记点及曲线的颜色设置(Color Specifiers of line): MATLAB 绘图函数中可选的颜色有 8 种,可在 plot 函数中确定: 红 r (red), 绿 g (green), 蓝 b(blue), 黄 y(yellow), 紫红m(Magenta), 青 c(cyan)
13、 黑 k(Black), 白 w(white).例:x=0:pi/20:2*pi;y=sin(x);plot(x,y,r), plot(x,y,g+) %确定曲线及标记点颜色4)图线的其他属性(other characters of plot): 在绘图函数 plot 中还可设置图线的宽度(LineWidth ) 、标记点的边缘颜色 (MarkerEdgeColor)、填充颜色(MarkerFaceColor)、标记点的大小(MarkerSize)等。图形属性由属性名字符串及属性值字符串或数字确定,两者必成对设置。plot(X1,Y1,LineSpec,PropertyName,Propert
14、yValue)h = plot(X1,Y1,LineSpec,PropertyName,PropertyValue)例: 设置图线的线形、颜色、宽度、标记点的颜色及大小。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 时,则绘出的是实部对虚部的关系图(复平面上的一组点) 。即
15、这时 plot(z)等价于 plot(real(z).例: 画一个 20 边的多边形(用 exp 函数生成),顶角用小圆圈表示。t=0:pi/10:2*pi;plot(exp(i*t),o) %i 为复数单位axis(square)如果在复平面绘制多重线 ,只能分别以实部和虚部为坐标来绘制,否则虚部将被忽略,并给出警告。二 图形的控制与表现(Figure control and representation)MATLAB 提供的用于图形控制的函数和命令:axis: 人工选择坐标轴尺寸.clf: 清图形窗口.ginput: 利用鼠标的十字准线输入.hold: 保持图形 .shg: 显示图形窗口.
16、subplot: 将图形窗口分成 N 块子窗口。1 图形窗口(figure 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
17、 window)subplot(m,n,p), 把窗口分成 mn 个小窗口,并把第 p 个窗口当作当前窗口。subplot(position,left bottom width height), 把窗口分成若干个大小可设定的小窗口,在指定位置的矩形区域中建立axes, left bottom width height 是规一化的坐标指定区域的位置和大小,坐标原点(0,0)在左下角,右上角坐标为(1,1) 。例 1:将 4 个图形显示在同一个图形窗口中。t=0:pi/20:2*pi;x,y=meshgrid(t);subplot(2,2,1)plot(sin(t),cos(t),axis equ
18、alsubplot(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)例 2:将多个图形分配不同的位置和大小,并显示在同一个图形窗中。a=1:200*pi/100; subplot(position,0.05 0.55 0.9 0.4); %建立第一个区域surf(peaks(26);subplot(position,
19、0.05 0.05 0.4 0.4); %建立第二个区域plot(sin(a);subplot(position,0.55 0.05 0.4 0.4); %建立第三个区域plot(3-a.*a);例 3; 利用图形句柄将多个图形分配不同的位置和大小,并显示在同一个图形窗中。a1=axes; %建立第一个区域set(a1,position,0.05 0.55 0.9 0.4); %定位于窗口的上方a2=axes; %建立第二个区域set(a2,position,0.05 0.05 0.4 0.4); %定位于窗口的左下方a3=axes; %建立第三个区域set(a3,position,0.55 0.05 0.4 0.4); %定位于窗口的右下方a=1:200*pi/100; %创建矢量s=sin(a);c=cos(a);t=1+a.*a;axes(a1); %在设定的区域绘图plot(a/pi,s);axes(a2);plot(a/pi,c);axes(a3); plot(a/pi,t);3). 在一个已有的图形上绘图(Drawing a figure on the figure was existed):