第六章图形处理功能 Chapter 6: The function of Image processing 二维图形( Two dimensional plotting) 1.基本绘图函数( Basic plotting function):Plot, semilogx, semilog, loglog, polar, plotyy (1).单矢量绘图( single vector plotting):plot(y,矢量y的元素与y元素下标 之间在线性坐标下的关系曲线。 例1:单矢量绘图 y=|00.62358.3171517.719.4201; plot(y) 可以在图形中加标注和网格, 例2:给例1的图形加网格和标注 y=00.62358.31l71517.719.420; plot(y) 简单绘图举例 title('简单绘图举例; labels'单元下标); 16 ylabel(给定的矢量); grid 单元下杉
第六章 图形处理功能 Chapter 6: The function of Image processing 一. 二维图形(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是同样长度的矢量, plo(x,y)命令将绘制y元素对应于x元素的xy曲线图。 例:双矢量绘图。 x=0:0.05:4pi plot(x,y 4 (3).对数坐标绘图( ploting in logarithm coordinate):x轴对数 semilogx, y轴对数 semilog,双对数 loglog, 例:绘制数组y的线性坐标图和三种对数坐标图。 y=00.62.358.31171517.719.4201; subplot(2, 2, 1) plot(y) subplot(2, 2, 2) semilog subplot(2, 2, 3) semilog(y) subplot(2, 2, 4) loglog(y) 101 (4)极坐标绘图( Plotting in polar coordinate) polar( theta,rho) theta-角度,rho半径 例:建立简单的极坐标图形。 t=0:01:2pi; polar(t, sin(2*t). cos(2*t))
(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))
多重曲线绘图( Multiple curve plotting (1)一组变量绘图( Agroup variable plotting plot(x, y) (a)x为矢量,y为矩阵时plot(x,y)用不同的颜色绘制y矩阵中各行或列 对应于x的曲线 例1 x=0:pi/50:2pi; 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:pi50:2spi; x(2,)=pi/4:pi50:2* pi+pi/4; x(3,:)=pi2:pi/50:2spi+pi2;
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(l, )) plot(x, y) (c)x和y是同样大小的矩阵时,plot(x,y)绘制y矩阵中各列对应于x各列的 图形。 例3 x(:,1)=|0:pi50:2*pil x(:2)=pi/4:pi50:2*pi+pi/4 x(:,3)=pi2:pi50:2 pipi/2}’; y(:,1)=sin(x(∷,1)) y(:;2)=0.6*sin(x(:,1) y(:3)=0.3sin(x(:,1) plot(x,y) 这里x和y的尺寸都是101×3,所以画出每条都是101点组成的三条 曲线。如行列转置后就会画出101条曲线,每条线由三点组成
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 的尺寸都是 101×3,所以画出每条都是 101 点组成的三条 曲线。如行列转置后就会画出 101 条曲线,每条线由三点组成
x(1,:)=|0:pi/50:2spil x(2, =pi/4: pi/50: 2 pi+pi/4 x(3,:)=pi/2:pi/50:2* pipi/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轴的坐标为n (2)多组变量绘图( Multiple group variables plotting): 对于一系列相应的矩阵y和xi,可以使用多组变量绘图法 plot(xl, y1, x 2, y2,..., xn,yn) 这种方法的优点是允许将不同大小的矩阵或矢量的图形绘制在一张图 上 例:多组变量绘图。 x=0:pi/50:2*pi; yI=sin(x); y2=0.6*sin(x); y3=0.3*sin(x); plot(x, yl, x, y2, x, y3) (3)双y轴绘图: plots, 在一个图形窗口绘制两组数据曲线,共用一个x轴,图形两边各有一 个y轴。两条图线可以调用不同的绘图方法 例1:
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, 可以使用多组变量绘图法: 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=xp(-0.3*x).sin(x)+0.5: plotyy (x,y, x, y, plot,stem") 左侧y轴对应plot形式的绘图,右侧y轴对应stem形式的曲线。 例2:对于y坐标不同的情况。 t=0:900 A=1000: a=0.005; b=0.005 zI=Aexp(-a*t); 2=sin(b*t); plotyy(t, zl, t, z2, semilog, plot) 3.图线形式和颜色( Style and color of plot) (1)图线的形式:( style of plot) MATLAB提供的四种线形, 实线 虚线--,冒号线:,点划线- 标记点类型:.,+,,0,×,s(或 square),d(或 diamond,△,V, 或 pentagram),h(或 hexagram), plo(x,y,-),plot(x1,y1,’’,x2,y2,”*) 例1:选择不同的线形绘图。 t=0:pi100:2*pi; y=sin(t y2=sin(t-0.25); y3=sin(t0.5); plot(t,y, - t, y2, -,t, y3
x=0:0.3:12; y=exp(-0.3*x).*sin(x)+0.5; plotyy(x,y,x,y,'plot','stem') 左侧 y 轴对应 plot 形式的绘图,右侧 y 轴对应 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,y1,’:’,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:选择不同的标记点绘图 =0:pi/20:2*pi; =t.^3 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 characters of plot):可设置图线的宽度、标记 点的边缘颜色、填充颜色、标记点的大小等。 例:设置图线的线形、颜色、宽度、标记点的颜色及大小 t=0:pi/20:pi; y=sin(4*t). *sin(t)/2; plot(t, y,-bs', Line width, 2, Marker Edge color,, k,. MarkerFace Color,,'y, MarkerSize, 10 4.复数绘图( Complex plotting):plot用于函数绘制复数的图形时,通常虚 部是被忽略的。但plot只作用于单个复变量z时,则绘出的是实部对虚部 的关系图(复平面上的一组点)。即这时plot(z)等价于 plot(real(z) 例:画一个20边的多边形(用exp函数生成),顶角用小圆圈表示 t=0: pi/10: 2 pi; plot(exp(i*t),o’) axis(square 如果在复平面绘制多重线,只能分别以实部和虚部为坐标来绘制,否 则虚部将被忽略,并给出警告 二.图形的控制与表现( Figure control and representation) MATLAB提供的用于图形控制的函数和命令: axis:人工选择坐标轴尺寸 清图形窗口 input:利用鼠标的十字准线输入
例 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 characters 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)等价于 plot(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.图形窗口( figure window) (1).图形窗口的创建和选择( Creating and selecting of figure window) figure(m)函数用于为当前的绘图创建图形窗口,每运行一次 figure就会 创建一个新的图形窗口n表示第个n窗口如果窗口定义了句柄,也可 以用 figure(h)将句柄h的窗口作为当前窗口。 cIf命令用于清除当前图形窗口中的内容。 shg命令用于显示当前图形窗口。 (2).在一个图形窗口中绘制多个子图形( Drawing several subfigures in a single window) subplot(m,n,p),把窗口分成mxn个小窗口,并把第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(02"pi-2 2) subplot(2, 2, 3) z=sin(x). *cos(y) plot(t, z), axis(02"pi-I ID) subplot(2, 2, 4) z=sin(x). 2-cos(y). 2;
hold: 保持图形. shg: 显示图形窗口. 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 window) subplot(m,n,p), 把窗口分成 m×n 个小窗口,并把第 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(102 pi-l ID) (3).在一个已有的图形上绘图( 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 inter %表面色彩渲染 hold off 2.坐标轴控制命令( xis control commands) 控制坐标性质的axs函数的多种调用格式: axis( XmIn xmax ymIn ymax):指定二维图形x和y轴的刻度范围 axis auto 设置坐标轴为自动刻度(缺省值) axis manual(或axis(axis)保持刻度不随数据的大小而变化 axis tight 以数据的大小为坐标轴的范围 axIs l 设置坐标轴的原点在左上角,i为纵坐标,j为横坐标 axis xy 使坐标轴回到直角坐标系 axis equal 使坐标轴刻度增量相同 axis square 使各坐标轴长度相同,但刻度增量未必相同 axis normal自动调节轴与数据的外表比例,使其他设置失效 axis off 使坐标轴消隐 axis on 显现坐标轴 (1)坐标轴的范围( Domain of coordinates axis): 二维图形坐标轴范围在缺省状态下是根据数据的大小自动设置的,如 欲改变,可利用 axis(xmin xmax ymin ymax),函数来定义。 例:定义坐标轴范围对观察图形的影响。 x=0:0l:pi/2 figure(1)
plot(t,z), axis([0 2*pi –1 1]) (3). 在一个已有的图形上绘图(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 xmax ymin ymax):指定二维图形 x 和 y 轴的刻度范围, axis auto 设置坐标轴为自动刻度(缺省值) axis manual(或 axis(axis)) 保持刻度不随数据的大小而变化 axis tlght 以数据的大小为坐标轴的范围 axis ij 设置坐标轴的原点在左上角,i 为纵坐标,j 为横坐标 axis xy 使坐标轴回到直角坐标系 axis equal 使坐标轴刻度增量相同 axis square 使各坐标轴长度相同,但刻度增量未必相同 axis normal 自动调节轴与数据的外表比例,使其他设置失效 axis off 使坐标轴消隐 axis on 显现坐标轴 (1) 坐标轴的范围(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), -") axis(|0,pi/2,0,5)%对坐标轴的范围进行控制就可得到较满意的绘 图结果 (2)显示比例对绘图结果的影响( Effect of 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 squal %正方形的显示比例 grid on figure(2) subplot(1, 2, 1) plot(sin(t), 2*cos(t)) axis equal %具有相等的刻度比例 grid on subplot(1, 2, 2) plot(sin(t), 2*cos(t)) axis tight %紧缩形式 grid on 3.图形标注( Marking on the figure): MATLAB的图形标注方法(表 6-7)
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 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 %具有相等的刻度比例 grid on subplot(1,2,2) plot(sin(t),2*cos(t)) axis tight %紧缩形式 grid on 3.图形标注(Marking on the figure):MATLAB 的图形标注方法(表 6—7)