首页 matlab基础教程第六章 图形处理功能

matlab基础教程第六章 图形处理功能

举报
开通vip

matlab基础教程第六章 图形处理功能 第六章 图形处理功能 Chapter 6: The function of Image processing MATLAB提供了大量用于将矢量数据以曲线图形方式进行显示的函数,包括用于实现图标绘制、科学曲线绘制和各种专业数据可视化显示的二维图形绘制函数;用于表示向量场的数据及二元函数的图形表达的三维图形绘制函数;提供了用于图形效果高级处理的相关函数以及图形句柄操作函数;柱状图、饼图和直方图等特殊图形绘制函数;动画制作等丰富的3D可视化功能。 一. 二维图形(Two dimensional plotti...

matlab基础教程第六章 图形处理功能
第六章 图形处理功能 Chapter 6: The function of Image processing MATLAB提供了大量用于将矢量数据以曲线图形方式进行显示的函数,包括用于实现图标绘制、科学曲线绘制和各种专业数据可视化显示的二维图形绘制函数;用于表示向量场的数据及二元函数的图形表达的三维图形绘制函数;提供了用于图形效果高级处理的相关函数以及图形句柄操作函数;柱状图、饼图和直方图等特殊图形绘制函数;动画制作等丰富的3D可视化功能。 一. 二维图形(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是同样长度的矢量, 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)) 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为矢量时绘图 规则 编码规则下载淘宝规则下载天猫规则下载麻将竞赛规则pdf麻将竞赛规则pdf 与(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矩阵中各列对应于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: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]。 x=pi; y=[sin(x) cos(x)+9 x^2;x^3+8 sin(x)*2 3+15*x;x^4-x^2 x^3-2 6*x+cos(x)] plot(y) (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) x1=0:pi/50:2*pi; x2=0:pi/50:3*pi; x3=0:pi/50:6*pi; y1=sin(x1); y2=0.6*sin(x2); y3=0.3*sin(x3); plot(x1,y1,x2,y2,x3,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轴对应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. 图线形式和颜色 (Line Specification) Line specification string syntax plot(X1,Y1,LineSpec,...,Xn,Yn,LineSpec) 1) 图线的形式: (Line Style Specifiers) MATLAB提供的四种线形, 实线 —(Solid line (default)),虚线- -( Dashed line), 冒号线 :(Dotted line), ,点划线 —· (Dash-dot line) 2) 标记点类型:(Marker Specifiers) . Point, + Plus sign, *Asterisk, o Circle, ×Cross, s 'square' or s , d 'diamond' or d , △ Upward-pointing triangle,, ▽ Downward-pointing triangle, < Left-pointing triangle, > Right-pointing triangle, p 'pentagram' , Five-pointed star, h 'hexagram' Six-pointed star , 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:选择不同的标记点绘图。 t=0:pi/20:2*pi; x=t.^3; y=sin(t); plot(x,y,'o') 3) 线的颜色(Color Specifiers of line): MATLAB中可选的颜色: 红r (red), 绿g (green), 蓝b(blue), 黄y(yellow), 紫红m(Magenta), 青c(cyan) 黑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): 可设置图线的宽度(LineWidth)、标记点的边缘颜色(MarkerEdgeColor)、填充颜色(MarkerFaceColor)、标记点的大小(MarkerSize)等。图形属性由属性名字符串及属性值字符串或数字确定,两者必成对设置。 plot(X1,Y1,LineSpec,'PropertyName',PropertyValue) 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时,则绘出的是实部对虚部的关系图(复平面上的一组点)。即这时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(n)函数用于为当前的绘图创建图形窗口,每运行一次figure就会创建一个新的图形窗口,n表示第个n窗口,如果窗口定义了句柄,也可以用figure(h)将句柄h的窗口作为当前窗口。 clf 命令用于清除当前图形窗口中的内容。 shg命令用于显示当前图形窗口。 2). 在一个图形窗口中绘制多个子图形(Drawing several subfigures in a single window) subplot(m,n,p), 把窗口分成m×n个小窗口,并把第p个窗口当作当前窗口。 subplot(‘position’,[left bottom width height]), 把窗口分成若干个大小可设定的小窗口,在指定位置的矩形区域中建立axes, left bottom width height是规一化的坐标指定区域的位置和大小,坐标原点在左下角,右上角坐标为(1,1)。 例1:将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]) 例2:将多个图形分配不同的位置和大小,并显示在同一个图形窗中。 a=[1:200]*pi/100; subplot('position',[0.05 0.55 0.9 0.4]); %建立第一个区域 surf(peaks(26)); subplot('position',[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): 用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 tight 以数据的大小为坐标轴的范围 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),'-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) title 标题, xlabel x轴标注, ylabel y轴标注, text 任意定位的标注 gtext 鼠标定位标注, legent 标注图例 图形标注可以使用字母,数字,汉字或按规定的方法表示希腊字母,如\pi表示π,\leq表示≤,\rm表示后面的字恢复为正体字,\it表示斜体字,FontSize表示字体的大小, FontName表示字体的类型等。 可以使用图形窗口的 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('正弦函数图形','FontName','隶书','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,sin(pi),'\leftarrowsin(t)=0', 'FontSize',16) text(5*pi/4,sin(5*pi/4),'sin(t)=-0.707\rightarrow','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]) 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}^{-\it\alpha\itt}sin\it\beta{\itt}\it\alpha<<\it\beta') xlabel('时间\mus.'), ylabel('幅值') 在title中的字符串表现的是 Aeαt sinβt α<<β {\itAe}^{-\it\alpha\itt} sin\it\beta{\itt}\it\alpha<<\it\beta’ 斜体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函数的其他功能见(表 6—8) 三. 特殊图形(Special 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是m×n阶的矩阵时,bar(y) 绘制的条形图以分组或叠加的形式表现。矩阵中每一行元素绘制在一组中,每一列元素绘制在每组中相对应的位置上(各组中同样颜色的条形表示同一列数据)。 例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') (c) 使用bar(x,y)绘制指定x坐标的条形图,其中x必须是矢量,用于确定各组条形图的位置。 例1:指定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) 例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),将m×n阶的矩阵绘制成分布在三维空间中的柱体,有分组形式和分列形式两种。 例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 250 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 (^{o}C)') h1=gca; %获取当前轴对象句柄 h2=axes('position',get(h1,'position')); %建立新的与h1位置相同的对象句柄 plot(days,TCE,'LineWidth',3) %在以为句柄的坐标对象上绘制物质成分与时间的关系曲线 set(h2,'YaxisLocation','right','color','none','Xticklabel',[]) %设置句柄为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) 2)、饼图(pie): 用于表示矢量或矩阵中各元素所占有的比例。, 函数pie和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.6]; pie(x,[0 0 0 0 1]) %分离第5块 (3) 不完整的饼图:当x的全部元素之和小于1时绘制的是不完整饼图。 例3: x=[0.2 0.3 0.4]; pie(x) (4) 三维饼图:有一定厚度的饼图, 由函数pie3实现,调用方法与二维饼图相同。 例:带分离切块的三维饼图。 x=[5.5 74.7 44.5 33.2 46.6]; pie3([1 2 3 4 5],[0 1 0 1 0]) 3). 其他图形(Other figures): MATLAB有20多种特殊图形的绘制方法,下述为常用方法。 (1)直方图(hist): 一种统计运算的结果,它的横轴是数据的幅度,纵轴是对应于各个幅度数据出现的次数,直方图没有负数。 例 1:直角坐标系下矢量的直方图。 yn=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') %可用字符串改变线形、标记点形状和颜色 例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') %返回三维曲线图的句柄 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.) 例:绘制函数 阶梯图。 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)} sin\beta*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,s,c) x, y为两个矢量,用于定位数据点,s为绘图点的大小,c为绘图所使用的色彩,s和c均可以以矢量或表达式形式给出,s和c为与x或y同长度的矢量时标记点尺寸和颜色将按线性规律变化。在 scatter函数的前4各参数之后还可以增加第五个参数‘ filled‘,表示填充绘图点。Scatter与plot 的最大差别在于Scatter可以绘制变尺寸、变颜色的点图。 例:给定数据t=0:pi/10:2*pi, y=sin(t),观察在不同输入参数时函数的绘图结果。 t=0:pi/10:2*pi; y=sin(t) subplot(3,2,1) scatter(t,y) subplot(3,2,2) scatter(t,y,'v') subplot(3,2,3) scatter(t,y,(abs(y)+2).^4,'filled') subplot(3,2,4) scatter(t,y,30,[0:2: 40],'v','filled') subplot(3,2,5) scatter(t,y,(t+1).^3,y,'filled') 四. 三维图形(3-D figure) 1. MATLAB提供了大量三维图形的表现函数,可用于绘制三维曲线图、网格图、表面图、伪彩图和等高线图等,还提供了控制颜色、光线、视角等绘图效果的函数和命令。 2. 三维曲线图(3-D plotting) plot3(x,y,z) 当x,y,z是同样长度的矢量时,绘出的是一条在三维空间贯穿的曲线。 例1:当x, y, z都是一维数组时的三维曲线图。 t=0:pi/50:10*pi; x=exp(-t/15).*sin(2*t); y=exp(-t/15).*cos(2*t) z=t; plot3(x,y,z) axis square; grid on 如x,y,z都是m×n阶的矩阵时,绘出的是m条分布在三维空间的曲线。 例2:当x, y, z都是矩阵时的三维曲线图。 [x,y]=meshgrid([-2:0.1:2]); z=x.*exp(-x.^2-y.^2); plot3(x,y,z) grid on 例3:规定线形、颜色及标记点的三维曲线图。 t=0:pi/20:5*pi; plot3(sin(t),cos(t),t,':*r') 3. 三维绘图数据的产生(Creating the data of 3-D figure) (1)peaks用于创建双峰函数和绘图。基本调用格式为: * [x,y,z]=peaks(n): 分别创建x,y,z三个均为n×n阶的方阵,其中x的每一列元素都相同,每一行元素均为在[-3,3]区间内的n等份,y的行列元素与x刚好相反,z为x和y的函数, z= · Peaks(n) · 直接用peaks函数创建的x,y,z三个矩阵绘制表面图,相当于执行了[x,y,z]=peaks(n)和surf(x,y,z)两个函数。 例1: a=peaks(8); mesh(a) (2)meshgrid 按指定方式生成网格矩阵,调用格式为: [X,Y,Z]=meshgrid(x,y,z) 分别创建X,Y,Z三个m×n×k阶的矩阵,矩阵的阶数由x,y,z三个矢量的长度m,n,k确定,X,Y,Z三个矩阵表示了三维空间的网格,如省略了Z,则创建二维网格。 [x,y,z]=meshgrid( 2,3, 6); plot3(x,y,z) grid on 4. 网格图(Meshing) *mesh(z) 绘制分别以 m×n阶矩阵z的行数和列数为x和y坐标 ([1:m],[1:n]),以z的对应元素值为z坐标的三维网格图。 *mesh(x,y,z) 绘制分别以矩阵x,y,z的元素值为坐标的三维网格图,x,y,z必须为同阶矩阵。 *函数Meshc: 将网格图与等高线一起绘制。 *函数Meshz: 在绘制的同时绘制零基准平面。 例 1:绘制各种网格图 subplot(2,2,1) mesh(peaks(20)) %基本网格图 subplot(2,2,2) meshc(peaks(20)) %带等高线的网格图 subplot(2,2,3) p=peaks(30); p(20:23,9:15)=NaN*ones(4,7); %剪孔位置(将部分网格设置为非数) meshz(p) %带剪孔的垂帘网格图(带有零基准平面) subplot(2,2,4) Waterfall(peaks(30)) %瀑布水线图 5. 着色表面图(Surfing) (1)绘制表面着色图 surf, 绘制表面着色图的基本命令; surfc, 绘制带等高线的着色表面图; surfl 可以控制表面图的光照效应。 函数surf的调用格式: · surf(z) 绘制分别以 m×n阶矩阵z的行数和列数为x和y坐标 ([1:m],[1:n]),以z的对应元素值为z坐标的三维表面图。 · surf(x,y,z) 绘制分别以矩阵x,y,z的元素值为坐标的三维表面图, x,y,z 必须为同阶矩阵。 ([1:m],[1:n]),以z的对应元素值为z · surf(x,y,z,c) 用C定义的颜色绘制三维表面图。 · surf(…,’PropertyName’,PropertyValue) 定义三维表面属性图。 · surfc(…) 绘制带等高线的三维表面图。 · h=surf(…)和 h=surfc(…) 返回表面图的图形对象句柄。 例1:用surf函数画一个椭圆表面。 (a)生成数据并绘制表面图 x=-1.5:0.3:1.5; y=-1:0.2:1; [x,y]=meshgrid(x,y); %将矢量x,y转为数组X,Y,用于绘三维表面图 z=sqrt(4-x.^2/9-y.^2/4); surf(x,y,z) MESHGRID X and Y arrays for 3-D plots. [X,Y] = MESHGRID(x,y) transforms the domain specified by vectors x and y into arrays X and Y that can be used for the evaluation of functions of two variables and 3-D surface plots. The rows of the output array X are copies of the vector x and the columns of the output array Y are copies of the vector y. (2) 用surfl函数绘制带光照效果的表面图 x=-1.5:0.3:1.5; y=-1:0.2:1; [x,y]=meshgrid(x,y); %将矢量x,y转为数组X,Y,用于绘三维表面图 z=sqrt(4-x.^2/9-y.^2/4); surfl(x,y,z) colormap(hot) (3)调用表面色彩渲染函数shading ,控制表面颜色连续变化。 x=-1.5:0.3:1.5; y=-1:0.2:1; [x,y]=meshgrid(x,y); %将矢量x,y转为数组X,Y,用于绘三维表面图 z=sqrt(4-x.^2/9-y.^2/4); surfl(x,y,z) colormap(hot) shading interp shading 函数有三个可选择参数flat, faceted, interp 例:不同shading 函数参数设置的效果对照 figure(1) surf(peaks(20)) shading flat %网格的每个线段和表面都有相同的颜色 figure(2) surf(peaks(20)) shading faceted %在flat的基础上加黑色网格 figure(3) surf(peaks(20)) shading interp %网格的每个线段和表面上的颜色都是变化的 例:产生一个旋转柱面体。 t=0:pi/12:3*pi; r=abs(exp(-0.25*t).*sin(t)); [x,y,z]=cylinder(r,30); surfl(x,y,z) colormap(prism) %按照预定的色彩索引映射色图 shading interp 5. 表面图形的透明处理hidden off: 是个开关型命令,可以看到被遮挡的网格线条,使图形透明 例:有无透明处理的效果对比。 [x,y]=meshgrid(-8:.5:8); R=sqrt(x.^2+y.^2)+eps; Z=sin(R)./R; figure(1) %hidden on (缺省,无透明处理) mesh(Z) colormap([0,1,0]) [x,y]=meshgrid(-8:.5:8); R=sqrt(x.^2+y.^2)+eps; Z=sin(R)./R; figure(2) %hidden off (做透明处理) mesh(Z) colormap([0,0.2,0.5]) hidden off 6. 表面图形的颜色映射colormap: colormap函数用于按照预定的色彩索引映射色图:colormap( [RGB颜色矢量函数] )或colormap(MAP),下述RGB颜色表,用于网格图mesh;色彩映射表,用于表面图surf。 常用的RGB颜色值 颜色名称 红色(R) 绿色(G) 兰色(B) 黑 0 0 0 白 1 1 1 红 1 0 0 绿 0 1 0 蓝 0 0 1 黄 1 1 0 粉红 1 0 1 淡蓝 0 1 1 灰 0.5 0.5 0.5 深红 0.5 0 0 紫铜 1 0.62 0.40 碧绿 0.49 1 0.83 几种典型的色彩映射(MAP) bone 连续变化的兰色调灰度图 spring 连续变化的黄粉色调图 copper 连续变化的纯铜色调灰度图 summer 连续变化的黄绿色调图 Grayg 连续变化的灰度图 autumn 连续变化的黄红色调图 hot 连续变化的暖色调图 winter 连续变化的蓝绿色调图 pink 连续变化的粉红色调图 flag 交替变化的四色图 cool 连续变化的冷色调图 prism 交替变化的光谱色图 hsv 连续变化的饱和色图 colorcube 交替变化的浓淡色图 jet 连续变化的变异饱和色图 lines 交替变化的线图色图 7. 切片图(Slice figure) slice(X,Y,Z,v,xi,yi,zi): 借助色彩实现三元函数的四维可视化表现函数,其中X,Y,Z为使用meshgrid函数生成的三维网格坐标矩阵,xi,yi,zi 为切片位置。slice函数用于实现三元函数(v=f(x,y,z)图形函数)的可视化表现,绘制三维物体切片图。 例: 函数 的四维表现。 x=-2:0.1:2; y=-2:0.25:2; z=-2:0.25:2; [X,Y,Z]=meshgrid(x,y,z); %形成X,Y,Z三维网格坐标矩阵 v=X.*exp(-X.^2-Y.^2-Z.^2); %所绘制的图形的函数 xi=[-0.7,0.7]; %切片位置 yi=[-0.4,1.9]; zi=-0.5; slice(X,Y,Z,v,xi,yi,zi) %形成三维切片图 xlabel('x'); ylabel('y'); zlabel('z'); colorbar('horiz') %创建水平色条,也可用colorbar(‘vert’)创建垂直色条 view([-30,45]) 五. 图形处理的高级技术(Advanced technology of image processing) 1. 视图(View) 控制视图和旋转的函数:view, viewmtx, rotate, rotate3d (1)视图方向:view(az,el) az (azimuth)---方位角,绕z轴旋转,逆时针为正, el (elevation) ---仰角, 从xy平面向z轴旋转的角度,朝向z轴的旋转为正。缺省状态二维图形: az=0o, el=90o, 三维图形: az=-37.5o,el=30o view(2) 缺省的二维视图(az=0°, el=90°) view(3) 缺省的三维视图(az=-37.5°, el=30°) view([X,Y,Z]) 设置视点的直角坐标 例: 比较不同视图的视觉效果。 figure(1) subplot(2,2,1) peaks(50) subplot(2,2,2) peaks(50) view(90,0) subplot(2,2,3) peaks(50) view(30,45) subplot(2,2,4) peaks(50) view(2) %二维平面图 figure(2) peaks(50); view([3,1,9]) %设定视点坐标 VIEW([X Y Z]) sets the view angle in Cartesian coordinates. The magnitude of vector X,Y,Z is ignored. (2) 图形旋转: rotate3d 三维视图变化命令,可以用鼠标控制视图的变化。 例: peaks(50) rotate3d 2. 光照设置 (1) 创建光源 *light(‘color’,option1,’style’,option2,’position’,option3) option1可以采用RGB三元组或相应的色彩字符,如[1,1,0]和y都代表黄色。 option2有infinite(无穷远光光) 和local(近光)两个取值。 option3总是直角坐标的三元数组形式。 不使用此函数时,图形采用各处相等的漫射光,采用后产生确定属性的光源,缺省设置为无穷远处的白色光源穿过[1,0,1]射向坐标原点。 (2) 光照模式 light options: 该指令只有在 light 命令执行后才能起作用。 flat: 入射光均匀照射在图形对象的每个小面上,为缺省选项。 gouraud: 先对顶点颜色插值,再对由顶点勾画的面插值,选项用于曲面的表现。 phong: 对顶点处法线插值,再计算各像素点的反光,效果好,但占机时多。 none: 关闭所有光源 (3) 材料反射系数 material material options:有4种预定义的表面反射模式: shiny: 有光泽、明亮,镜反射份额较大。 dull: 暗淡、柔和,漫反射份额大,无镜面亮点。 metal: 有金属光泽,镜反射份额大,背景光和反射份额小。 Default: 缺省方式。 (4) 对五大反射要素进行特别设置 material([ka,kd,ks,n,sc]) ka: 环境光(背景光)强度(数值越大,光越强)。 Kd: 漫反射强度(数值越大,光越强)。 Ks: 镜射光强度(数值越大,光越强)。 N; 镜面指数(控制镜面亮点大小,指数越大亮点越小)。 Sc: 镜面颜色的反射系数。 例:光照和材料反射系数的示例。 clf %清理当前图形窗口 t=linspace(0,2*pi,100); %建立线性空间矢量 r=1-exp(-t/2).*cos(4*t); %旋转母线 [x,y,z]=cylinder(r,60); %产生旋转柱数据 ii=find(x<0&y<0); %确定x-y平面第四象限上的数据下标 z(ii)=NaN; %剪切 surf(x,y,z) colormap(pink) shading interp %表面色彩渲染 light('position',[-3,-1,3],'style','local') %设置光源 material([0.5, 0.4,0.3,10,0.3]) %设置表面反射 LINSPACE Linearly spaced vector. LINSPACE(x1, x2) generates a row vector of 100 linearly equally spaced points between x1 and x2. LINSPACE(x1, x2, N) generates N points between x1 and x2. 例2:显示效果增强后的二元函数表面图及光照。 [x,y]=meshgrid(-8:.1:8); r=sqrt(x.^2+y.^2)+eps; z=2*sin(r )./r; surf(x,y,z) shading interp; daspect([5 5 1]) %设置坐标轴数据的纵横比 axis tight view(-50,30) light('position',[-10,-10,21]) (DASPECT Data aspect ratio. DAR = DASPECT gets the data aspect ratio of the current axes. DASPECT([X Y Z]) sets the data aspect ratio. DARMODE = DASPECT('mode') gets the data aspect ratio mode. DASPECT(mode) sets the data aspect ratio mode. (mode can be 'auto' or 'manual') DASPECT(AX,...) uses axes AX instead of current axes. DASPECT sets or gets the DataAspectRatio or DataAspectRatioMode property of an axes.) 例3:绘制双光照效果的球。 sphere(36); %创建球面的函数sphere(n),球面小刻面(n+1×n+1) axis equal light('position',[1 3 2]); light('position',[-3 -1 3]); material shiny axis off %消隐坐标轴 3. 图象(Image):数字图像是将一幅二维的图像表示成一个数值矩阵 ,矩阵的元素被解释为像素的颜色值(或灰度值),或解释为调色板颜色的索引号。 (1)三大类图象(Three kind of images):图像通常有数据矩阵和色彩矩阵组成,根据图像着色方法的不同,把图像分为三大类: *索引(变址)图(Indexed inage):由一个图象矩阵(X)和一个色图矩阵(MAP)组成,调用格式:[x,map]=imread(‘filename’); *灰度(强度)图(Intensity image):由一个图象矩阵(X)和一个色图矩阵(MAP)组成,其色图为单色的灰度色图。调用格式:x=imread(‘filename’); *真彩色(RGB)图 (TrueColor or RGB image):由一个三维图象数据组组成,第三维为RGB三原色数据,没有色图矩阵。调用格式:x=imread(‘filename’); (2)图像的读写: 图像读取函数:imread 从图像文件中读出数据 A=imread(filename,fmt) filename, 为图像的文件名,fmt为指定图像的类型,输出数组A是由由图像文件中读出并转化成MATLAB可识别的图像格式数据,对于灰度图,A是二维的,对于真彩色图A是三维数组。 [X,MAP]=imread(filename,fmt):把经过转化的索引图像数据保存到数组X中,同时把相关的颜色映像读到数组MAP中。 […]=imread(filename):通过文件的内容自动判断其格式。 图像写入函数:imwrite 将数据写回图像文件中。 imwrite(A,filename,fmt):把图像的数据A输出到文件filename,图像的类型为fmt。 imwrite(…,filename):MATLAB自动从文件的扩展名推断图像类型。 imwrite(…,param1,param2,val2,…):设置输出图像文件的参数,设置的参数及取值可参看关于图像处理方面的资料。 图像文件的显示函数: image(X): X为图形的矩阵。 例:图象读写示例 [x,map]=imread('canoe.tif'); %读取图象文件 image(x); % 显示图象 colormap(map) %色彩映射 axis image off %消隐坐标轴 f=getframe %结构函数 imwrite(f.cdata,'canoe.tif') % 写入图像数据 (3). 图形的输出(Output figures) a.图形打印 (printing figures) (a) 从图形窗口的File菜单中选择 Print选项,弹出 Windows打印对话框; (b)使用打印命令print:print -device -options 例: x=0:pi/100:2*pi; plot(x,sin(x)) print %将图形打印在默认打印机上 b. 图象存储(Saving figures) (a) 利用print命令将图形输出到文件,格式为: print -- device – options filename: If you specify a filename, MATLAB directs output to a file instead of a printer. PRINT adds the appropriate file extension if you do not specify one. 如print(h,’-djpeg’,’a01’,’-r100’) %建立100dpi的图形文件a01.jpg (b)生成图象文件:图形窗口中显示的任何图形都可以通过getfram命令得到相应的位图数据,然后用imwrite命令存储为其他格式的图象文件。如: x=imread('flowers.tif'); image(x) f=getframe; % f是一个结构函数 imwrite(f.cdata,'flowers.jpg') %或用:[x,map]=frame2im(f) FRAME2IM Convert movie frame to indexed image. [X,MAP] = FRAME2IM(F) converts the single movie frame F into the indexed image X and associated colormap MAP. A movie frame is the result of GETFRAME or IM2FRAME. If the frame contains truecolor data, then MAP is empty. 5.3以前版本用capture命令捕捉当前图形。 六. 图形对象与句柄(Figure object and handle) 1. 图形对象概述(Introduction of figure object) 图形对象(Figure object): 图形对象就是可以确定图形的整体或部分属性的各层界面。各层次图形对象是相互关联的,低层次的对象必须建立在它所在层次之上各层对象完备的基础上。 计算机屏幕是最顶层的根,图形窗口是它的子对象,而它又是其下的轴、控件、菜单及对象菜单对象的父对象,轴对象是所有绘图对象的父对象。 2. 图形对象的类型(Type of figure object) (1)根屏幕(root screen): 在层次的最顶层是根对象,相当于计算机屏幕,根对象只有一个,根对象不能被建立,但可以设置根属性以控制图形的显示。 (2)图形窗口(figure window): 独立于根屏幕的显示图形窗口,是根对象的子对象,而所有其他图形对象都是图形窗口的子孙。所有的绘图函数(如plot 和surf等)都会自动建立一个图形窗口。 (3) 轴(axis): 轴对象在图形窗口中定义一个区域,并确定该区域中子对象的方向,轴是图形窗口的子对象,又是图象、灯光、线、块、表面和文字的父对象。 (4) 控件(Uicontrol): 用于接口控制的按钮、列表框、滑条等,可以联合使用构成控制面板和对话框。 (5) 菜单(Uimenu): 下拉菜单,当用户选择一个独立的菜单项时执行回调程序。 (2) 对象菜单(Uicontext menu): 用鼠标右键点击某一个图形对象时弹出对象菜单,它必须与某一个图形对象联合使用。 (3) 图象 Image 由数据矩阵和色图矩阵组成的图象,有三种:索引图、强度图、真彩色图。 (4) 灯光Light 灯光对象定义光源。 (5) 线 Line 线对象是大多数二维和三维绘图的基础。 (6) 块Patch 块对象是带有边界、被填充的多边形。 (7) 矩形Rectangle 矩形对象是二维填充区域,形状可以从矩形到椭圆。 (8) 表面 Surface 表面对象是矩阵数据的三维表现。 (9) 文字Text 文字对象是字符串。 3.句柄图形(Handle figures): 图形对象的句柄是MATLAB显示图形数据和建立图形用户接口的基础,每个对象从产生时起就被赋予了一个唯一的标识,这种标识就是该对象的句柄。利用句柄就可以操纵一个已经存在的图形对象的特性(属性)。 Set 和get函数用于设置和获取指定句柄对象的属性值。 Set 的调用格式: Set(H,’PropertyName’,Property Value) 把句柄为H 的对象中名为‘PropertyName’的属性的值设为’Property Value’’. Set(H,a):这里的 a为结构,其域名就是对象的属性名,属性值在域中,set 函数把属性值赋给和域名相同的属性,句柄H为标量。 Set(H,PN,PV): PN是1xN维数组,其中的元素为需要设置的属性名,PV中的元素是要设置的属性值,此式把句柄中指定的所有对象的属性设置为PV中的指定值。 Set(H,’PropertyName1’,Property Value1,…’PropertyNamen’,Property Valuen) 把句柄为H 的对象中的多个‘PropertyName’的属性的值设为’Property Value’’. A=Set(H,’PropertyName’)或Set(H,’PropertyName’):返回或显示句柄为H的对象的指定属性的值。 A=Set(H)或set(H): 返回或显示句柄为H的对象的所有属性和可能的取值。 Set(h,’DefaultObjectTypePropertyName’,Property Value) :设置对象属性的默认值,ObjectType和PropertyName分别代表相应的对象类型和属性名。 get 的调用格式: get (H):显示句柄为H的对象的所有属性名及当前的取值,H为标量。 PropertyValue=get(H,’PropertyName’):返回句柄为PropertyName的属性的属性值。 PropertyVlue=get(H):返回一个结构,结构的每一个域名就是句柄为H的对象的所有属性名,每个域又包含属性的值。H为标量。 PropertyValue=get(H,’Factory﹤ObjectType﹥﹤PropertyName﹥’):对于所有类型的对象,返回其所有由用户设置默认值的属性的出厂值。 PropertyName=get(0,’Default﹤ObjectType﹥﹤PropertyName﹥’):返回默认的属性值,H必须是标量。参数﹤ObjectType﹥和﹤PropertyName﹥是可选的。 编程中可以为对象设置句柄名称,从而方便利用get 和set函数操控图形。如果没有对对象设置句柄,可用gcf 命令获得当前图形窗口的句柄,使用gca命令获得当前坐标轴的句柄,使用gco命令获得当前对象的句柄。 (1) 利用set 函数定义图形坐标轴的显示刻度属性,用get函数询问坐标位置。 (a) 绘制正弦曲线。 t=-pi:pi/20:pi; y=sin(t); plot(t,y) 执行的结果轴的刻度值和间隔都是自动定义的数值轴。 (b)可以通过set函数对坐标轴对象进行定义,获得在x轴上设置角度刻度的效果,用get函数获得某些图形属性 : t=-pi:pi/20:pi; y=sin(t); plot(t,y) set(gca,'xtick',[-pi:pi/2:pi],'xticklabel',{'-pi','-pi/2','0','pi/2','pi'}) %设 置角度刻度效果 P=get(gca,’Position’) %坐标轴左下角和右上角的位置坐标 (c) 如在定义轴范围同时绘制网格线会使图形更加清楚。 t=-pi:pi/20:pi; y=sin(t); plot(t,y) set(gca,'xtick',[-pi:pi/2:pi],'xticklabel',{'-pi','-pi/2','0','pi/2','pi'}) axis( [-pi,pi,-1,1] ) grid (d) 坐标轴的刻度的属性值还可写成: set(gca,'XtickLabel','-pi|-pi/2|0|pi/2|pi') 例: t=-pi:pi/20:pi; y=sin(t); plot(t,y) set(gca,'XtickLabel','-pi|-pi/2|0|pi/2|pi') axis([-pi,pi,-1,1]) grid 如果是数字也可以写成:set(gca,Xticklabel’,[1;5;10;20]) t=-pi:pi/20:pi; y=sin(t); plot(t,y) set(gca,'Xticklabel',[1;5;10;20]) axis ([-pi,pi,-1,1]) grid (2) 在图形的上层显示网格 建立句柄为h的三维曲面: subplot(2,2,1) h=surf(sphere(30)) %缺省状态下曲面的网线是黑色的 subplot(2,2,2) h=surf(sphere(30)) set(h,'EdgeColor',[0.8,0.8,0.8]) %将网线设置为浅灰色 subplot(2,2,3) h=surf(sphere(30)) set(h,'EdgeColor','g') %将网线设置为绿色 subplot(2,2,4) h=surf(sphere(30)) set(h,'EdgeColor','r') %将网线设置为红色 get(h) (3). 将坐标格显示在图形上层 pcolor(peaks); shading interp grid on set(gca,'Layer','top') %将网线设置为红色 4. 用鼠标确定在曲线上画点的位置:通过设置图形对象句柄的鼠标响应获得点的坐标,根据所获得的x坐标在曲线上绘制星号。 t=0:pi/20:2*pi; plot(t,cos(t)) hold on set(gcf,'WindowButtonDownFcn',[... 'p=get(gca,''CurrentPoint'');',... 'px=p(1,1);py=cos(px);'... 'plot(t,cos(t));'... 'plot(px,py,''*r'');']) axis(axis) *动画制作:以循环方式查看图片的功能 MATLAB2007A提供了三个用于捕捉和播放动画的函数, moviein, getframe和 movie,配合运行的程序为: 首先由M=moviein(n) 创建具有n列的矩阵M,准备用于存储n帧画面; 再用Plot_command,M(j)=getframe 把制作影片动画用的第j 帧的相似画面的部分(用plot_command 函数绘出的图形)以列的方式保存在矩阵M中。本步的作用是开辟内存空间,以防占用过多的内存。 最后运行影片放映函数movie(M,k)可使矩阵M中存储的的画面连续放映k次。 例:制作向右移动的正弦形波 clear; n=12; m=moviein(n); t=0:2/n*pi:4*pi; x=0:1/n*pi:4*pi; nj=length(x); for i=1:n for j=1:nj y(j)=sin(x(j)-t(i)); end plot(x,y) axis([0,4*pi,-1.5,1.5]) m(i)=getframe; end movie(m,20) � EMBED AutoCAD.Drawing.14 ��� _1111060882.unknown _1241379870.unknown _1111207268.dwg _1110388506.unknown
本文档为【matlab基础教程第六章 图形处理功能】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_969320
暂无简介~
格式:doc
大小:370KB
软件:Word
页数:0
分类:
上传时间:2018-09-09
浏览量:15