380 likes | 571 Views
多媒体信息处理系统设计. MATLAB 绘图 http://www2.nbu.edu.cn/jiangzhidi/mediasystem http://bighand.zxq.net/mediasystem. 主讲:蒋志迪 宁波大学信息科学与工程学院 办公室:曹光彪信息楼 424 电话: 665929 email : bighandjzd@126.com. 基本绘图. plot----- 基本二维绘图函数. 格式 1 : plot(y).
E N D
多媒体信息处理系统设计 MATLAB绘图http://www2.nbu.edu.cn/jiangzhidi/mediasystem http://bighand.zxq.net/mediasystem 主讲:蒋志迪 宁波大学信息科学与工程学院 办公室:曹光彪信息楼424 电话:665929 email:bighandjzd@126.com
基本绘图 • plot-----基本二维绘图函数 • 格式1: plot(y) • y为复数矩阵,则相当于plot(real(y),imag(y)) • 格式2: plot(x,y) • 如果y为多行或多列矩阵,则绘制多条曲线 • 格式3: plot(x1, y1,x2,y2,…) • 绘制多条曲线在一个图中
格式4: plot(y,’s’) • plot(x,y,’s’) • plot(x1,y1,’s1’,x2,y2,’s2’…) • 颜色:b(默认:蓝)、g(绿)、r(红)、c(青)、m(洋红)、y(黄)、k(黑) • 线型:-(默认:实线)、:(虚线)、-.(点划线)、--(划线) • 标记:(默认:无标记)、.(点)、o(圈)、x(叉)、+(十字)、*(星)、s(方块)、d(菱形)、v(下三角)、^(上三角)、<(左三角)、>(右三角)、p(五角形)、h(六角形) s为一字符串,用于设置绘图颜色和线型
plotyy---- 双坐标绘图 • 格式:plotyy(x1,y1,x2,y2) 功能:将y1的坐标标在左边,y2标在右边, x1,x2 共用横坐标。 例如:plotyy(t,y,t1,y1) • loglog / semilogx /semilogy---对数坐标绘图 功能:与plot用法相同,区别为坐标轴为对数 Loglog( ):X-Y轴均为对数 Semilogx():X轴为对数(半对数) Semilogy():Y轴为对数(半对数) 例如:yl= (1:1:100);semilogy(yl);
polar----极坐标 格式:polar(θ,r) 功能:以θ为角度,r为半径绘图。 例:x=(0:pi/100:2*pi);yp=abs(sin(x));polar(x,yp) • 多曲线绘图控制 图形保持: hold on(off) • 子图控制: subplot(m,n,p) • 将窗口分成m(行)*n(列)个子图, 并指定在第p个子图中绘图 窗口控制: fugure(n) • 打开一个新窗口用于当前绘图,n为该窗口的句柄(唯一标识),用于在多个窗口中绘图。
图形控制 title(‘s’) —— 给图形加标题 例如: plot(t,y); title(‘sine wave’) xlabel (‘s’)—— 给x轴加标注 例如:xlabel(‘t(s)’) ylabel (‘s’)—— 给y轴加标注 例如:ylabel(‘V(mv)’) text (x,y,’s’)—在图形指定位置(x,y)加标注 例如:text(0.5,0.8,’t=0.5s v=0.8’) legend (‘s1’,’s2’,…)—— 添加图例 例如:plot(t,y,t1,y1);legend(‘sine’,’cosine’)
grid on(off) — 打开、关闭坐标网格线 例如:grid off zoom on(off) ---允许放大/缩小 axis —— 控制坐标轴的刻度 ■ axis([xmin,xmax,ymin,ymax]) 设定坐标轴的最大最小值 例如:plot(t,y);axis([-1 2 –2 2]) ■ axis(‘equal’)将两轴设为相等。 - axis equal/square ■ axis on(off) 显示或关闭坐标轴
例.同一坐标系下画出的sinx和cosx的函数图形,如何作?例.同一坐标系下画出的sinx和cosx的函数图形,如何作? x=linspace(0,2*pi,30); y=[sin(x);cos(x)]; plot(x,y); grid; xlabel('x'); ylabel('y'); title('Sine and COsine Curves'); text(3*pi/4,sin(3*pi/4),'\leftarrowsinx'); text(3*pi/2,cos(3*pi/2),'cosx\rightarrow',... 'HorizontalAlignment','right'); 这些命令行可以形成一个M文件ex1.m
特殊二维绘图 二维特殊绘图函数使用方法基本同plot 1、stem ––––绘制火柴杆图 例如:stem(t,y) 2、bar–––绘制直方图 例如:bar(t,y) 3、stairs ––––绘制阶梯图 例如:stairs (t,y,’r’)
4、area ––––区域图 例如:x=ones(1,5);area(x) 注意同 bar 的区别 5、 pie ––––饼图 例如:x=[1 2 3 2 1 1 ]; y=[0 0 1 0 0 0]; pie(x,y) 还有其它特殊函数。。。 符号作图:ezplot(‘f(x)’,[a,b])
基本三维绘图 • plot3----基本三维曲线 (plot_example_4.m) • 格式1:plot3(x,y,z) • 格式2:plot3(x1,y1,z1,x2,y2,z2…) • 格式3:plot3(x,y,z,’s’) plot3(x1,y1,z1,’s1’,x2,y2,z2,’s2’) s用于设置绘图颜色和线型,字符串意义同plot。
mesh ------三维网格图 • 格式1:mesh(z) 功能:z为二维矩阵,绘图时, 以元素下标( x = 1:n ,y = 1:m.)作为X-Y坐标, 元素值作为Z坐标, 将各点连成网格。颜色与高度成比例。 例如:♥ z=eye(10);mesh(z); ♥ z=peaks(20)(测试矩阵); mesh(z);
可以使用meshgrid()函数产生网格坐标: 格式:[X,Y]=meshgrid(x,y) x,y为向量, X的行为x的拷贝,Y的列是y的拷贝,X,Y同维 例如:[xx,yy]=meshgrid([ 1 2 3 4],[1 2 3 4]) 例如: [x,y]=meshgrid((-5:5),(-5:5)); z=x.^2+y.^2,mesh(z) 例如:画一个立体的抽样函数图(sin(r)/r) [x2,y2]=meshgrid((-10:0.5:10),(-10:0.5:10)); r=sqrt(x2.*x2+y2.*y2); z=sin(r)./r; mesh(z)
格式2:mesh(x,y,z) 功能:x,y,z 为三个矩阵,以各元素值为三维坐标点绘图,并连成网格。 例如: 画一四边形, (0,0,0),(1,0,0),(0,0.5,1),(1,0.5,1) xx=[0 1;0 1] ;yy=[0 0 ; 0.5 0.5]; zz=[ 0 0 ; 1 1];mesh(xx,yy,zz) 例如:画一个球体 [xx,yy,zz]=sphere(30);mesh(xz,yz,zz) 例如:画一个测试曲面 [x,y,z]=peaks(30);mesh(x,y,z)
格式3:meshc(x,y,z) 功能:在网格下画一等值线图 例如:meshc(x,y,z) • 格式4:meshz(x,y,z) 功能:在网格下画一窗帘(垂直线) 例如:meshz(x,y,z)
(plot_example_4.m) • surf-------三维曲面图 格式1:surf(z) 或 surf(x,y,z) 基本同mesh,只是将网格着色变为小曲面 例如: surf(x,y,z) 格式2:surfc(z) surfc(x,y,z) 带等高线的曲面图 例如:surfc(x,y,z)
三维图形的颜色修饰 颜色是三维图形中的第四维,如果不指定,则以Z轴值为准 1、色图函数:colormap(map) 通过系统预置的色图,可改变显示的颜色 例如:surf(x,y,z); colormap(hot) colormap(spring)
2、显示颜色条:colorbar 例如:surf(x,y,z);colorbar 3、颜色的浓淡处理:shading 用于改变mesh或surf的小网格或曲面的着色。有三种方法: ①shading flat:去掉黑色线条,根据小方块的值确 定颜色(平滑) ②shading interp:根据小方块四角的值差补过度点的值确定颜色(内插) ③shading faceted(缺省)(小平面)
图形控制 二维图形控制命令,大都适合三维图形控制 1、view(方位角,俯仰角) -----改变视角 缺省为(-37.5, 30), 例如:view(0,0) (看不见Y轴) 2、rotate3 on(off) ------允许旋转 3、hidden on(off) ----隐藏或透视被遮挡的地方
特殊三维绘图 1、stem3(x,y,z) ----- 三维火柴杆图: 例如:stem3(x,y,z) 2、bar3(z) ------ 三维条形图(同二维) 例如:bar3([1 2 3 2 1]) 3、pie3 (x,p)------ 三维饼图(同二维): 例如:pie3([1 2 3 2 1 1 ],[0 0 1 0 0 0]) 还有其它特殊函数。。。
例 等高线 作出由MATLAB的函数peaks产生的二元函数的曲面及其等值线图。 [X,Y,Z]=peaks(30); surf(X,Y,Z); figure(2); contour(X,Y,Z,16); figure(3); contour3(X,Y,Z,16);
父对象 子对象 根屏幕 窗口1 窗口2 窗口n 界面控制 界面菜单 轴 线 面 字 块 像 高级绘图控制 图形对象的基本要素以根屏幕为先导 句柄图形: 可以随意改变Matlab生成图形的方式 图形对象之间的关系为父代与子代的关系
创建图形对象的底层函数 • figure创建图形窗口 调用格式: h=figure(n) n为窗口序号 figure (property1,value1, property2,value2, … ) 常用的属性有: menubar, name, numbertitle, resize, position, unite, color, pointer, keypressfcn, WindowButtonDownFcn, WindowButtonMotionFcn,
axes 创建轴对象 h=axes (property1,value1, property2,value2, … ) 常用的属性有: box, gridlinestyle, position, unite, color, title
line 创建线对象 h=line(x,y), 或line(x,y,z), 常用的属性有:color, linestyle, linewidth, marker, markersize • patch 创建块对象 h=patch(x,y,z,c) x,y,z定义多边形,c确定填充颜色。 • surface 创建面对象 h=surface(x,y,z, property1,value1, property2,value2, … ) x,y,z三维曲面坐标, 常用的属性有:edgecolor, facecolor, linestyle, linewidth, marker, markersize
image 显示图象 h=image(x); x为图像矩阵 • text 标注文字 h=text(x,y,z, ’文字’, property1,value1, property2,value2, … ) 常用的属性有:color, string, interpreter, fontsize, rotation 每个底层函数只能创建一个图形对象,并将它们置于适当的父辈对象中。
什么是句柄? 句柄是图形对象的标识代码,标识代码含有图形对象的各种必要的属性信息。 • 各图形对象的句柄数据格式: 根屏幕: 0 图形窗口: 整数,表示图形窗口数 当前坐标轴的句柄:gca 当前图形窗的句柄:gcf 其它对象的句柄: 对应的符点数
图形对象属性的获得与设置 • 句柄属性的设置与修改 • get: 获得句柄图形对象的属性和返回某些对象的 句柄值 • set: 改变图形对象的属性 • findobj: 根据对象特性获取句柄
操作格式: get(h)或get(h, '属性名') : 查阅某对象的属性或子(children)父(parent)代的句柄值 set(h, '属性名', '属性值'):设置或修改某对象的属性值 findobj (h)或findobj(h, '属性名', '属性值'):获取对象子对象的句柄值, 或获取指定属性值的对象的句柄.
例:作正弦、余弦曲线,将正弦曲线改为虚线,将余弦曲线幅度减为1/2高度,如何用句柄实现。例:作正弦、余弦曲线,将正弦曲线改为虚线,将余弦曲线幅度减为1/2高度,如何用句柄实现。 x=0:2*pi/180:2*pi; y1=sin(x);y2=cos(x); plot(x,y1,x,y2,x,zeros(size(x)),':')
首先查询各对象的属性 h=get(gcf,'children') %获得图形窗的句柄 hh=get(gca,'children') %获得坐标轴的句柄 • 修改属性 y11=get(hh(2),'ydata'); y22=y11/2; set(hh(2),'ydata',y22); set(hh(3),'linestyle',':','linewidth',0.5);
句柄属性的缺省值操作 • 通过父代对象,设置缺省对象属性来实现的。 • 父代句柄属性中设置省缺值后,所有子代对象均可以继承该属性的省缺值。 • 属性缺省值设置有两种: 厂家设置值:其值不可更改 用户设置:当前环境下有效,搜索顺序子父祖父
属性省缺值的描述结构为: • default+h中对象名称+对象属性 • get(h, 'defaulttypeproperty') • set(h, 'defaulttypeproperty',属性值) • 注意:h须为对象的父代 例: get(0, 'defaultfigurecolor') —— 获得图形窗口的省缺值 set(gca, 'defaultlinecolor','r') ——设置线的颜色为红色 例:在图上添加文字注释,颜色为红色 set(gca, 'defaulttextcolor',[1 0 0]) gtext('正弦'); gtext('余弦')
End of This Lecture Thank!