420 likes | 616 Views
Matlab 计算与仿真技术 第十讲 : Matlab 绘图 -I http://human-robot.sysu.edu.cn/courses. 王国利. http://human-robot.sysu.edu.cn. 信息科学与技术学院. 中山大学. 第十讲提纲. Matlab 绘图 -I: 功能函数 - 二维图形 - 图形修饰与控制 - 三维图形 - 特殊图形绘制. Matlab 绘图 -I. 二维图形 - plot 二维曲线绘图函数 基本形式 plot(x,y,’s’)
E N D
Matlab计算与仿真技术 第十讲: Matlab绘图-I http://human-robot.sysu.edu.cn/courses 王国利 http://human-robot.sysu.edu.cn 信息科学与技术学院 中山大学
第十讲提纲 • Matlab绘图-I: 功能函数 - 二维图形 - 图形修饰与控制 - 三维图形 - 特殊图形绘制
Matlab绘图-I • 二维图形 - plot 二维曲线绘图函数 基本形式 plot(x,y,’s’) x,y是相同类型的等长向量s可选用于控制图形属性 原理: 点线 输入: 点坐标向量 输出: 插值曲线
Matlab绘图 (续) • 采样点对绘图的影响 - 曲线实例:y=sin(x), 0<x<2*pi >> x=[0:0.5:2*pi]; >> y=sin(x); >> plot(x,y,‘.') 提供曲线的插值点稀疏
Matlab绘图 (续) • 采样点对绘图的影响(续) - 曲线实例:y=sin(x), 0<x<2*pi >> x=[0:0.5:2*pi]; >> y=sin(x); >> plot(x,y,‘.-') 插值曲线 欠光滑
Matlab绘图 (续) • 采样点对绘图的影响(续) - 曲线实例:y=sin(x), 0<x<2*pi >> x=[0:0.1:2*pi]; >> y=sin(x); >> plot(x,y,‘.-') 提供曲线的插值点稠密
Matlab绘图 (续) • 采样点对绘图的影响(续) - 曲线实例:y=sin(x), 0<x<2*pi >> x=[0:0.1:2*pi]; >> y=sin(x); >> plot(x,y,‘.-') 插值曲线的变的光滑了
Matlab绘图 (续) • 采样点对绘图的影响(续) - 曲线实例:y=sin(x), 0<x<2*pi >> x=[0:0.1:2*pi]; >> y=sin(x); >> plot(x,y)
Matlab绘图 (续) • 函数 Plot常用的使用格式 - plot(x): 缺省自变量 - plot(x,y): 单条曲线 - plot(x1,y1,x2,y2,…): 多条曲线 - plot(x,y,’s’): 带属性修饰的曲线 - ‘s’ : 属性开关描述自符串变量
Matlab绘图 (续) • 图形颜色、标记和线形参数表
Matlab绘图 (续) • Plot 使用实例: 因变量缺省 >> x=[3 5 7 6 12 24 15 33 6 9 7 2]; >> plot(x) %绘制以序号为横坐标,元素值
Matlab绘图 (续) • Plot 使用实例: 多条曲线 >> x=linspace(0,7); >> y1=sin(2*x); >> y2=sin(x.^2); >> y3=(sin(x)).^2; %曲线1:红色实线,+号显示数据点 %曲线2:黑色点线,*号显示数据点 %曲线3:蓝色虚线,上三角形显示数据点 >> plot(x, y1, 'r+-', x, y2, 'k*:', x, y3,… 'b--^')
Matlab绘图 (续) • 图形的修饰与控制函数 title —— 给图形加标题 xlable —— 给x轴加标注 ylable —— 给y轴加标注 text —— 在图形指定的任意位置加标注 gtext —— 利用鼠标将标注加到图形任意位置 grid on/off —— 打开/关闭坐标网格线 legend —— 添加图例 axis —— 控制坐标轴刻度
Matlab绘图 (续) • 图形修饰/控制函数的使用 clear t=0:0.1:10; y1=sin(t); y2=cos(t); plot(t,y1,'r',t,y2,'b--'); x=[1.7*pi;1.6*pi]; y=[-0.3; 0.7]; s=['sin(t)';'cos(t)'];
Matlab绘图 (续) • 图形修饰/控制函数的使用(续) text(x, y, s); %指定位置加标注 title('正弦和余弦曲线'); %标题 legend('正弦','余弦') %添加图例注解 xlabel('时间') %x坐标名 ylabel('正弦&余弦') %y坐标名 grid on %添加网格 axis square %将图形设置为正方形
Matlab绘图 (续) • 图形修饰/控制函数的使用(续)
Matlab绘图 (续) • 图形保持函数 hold 功能: 实现异步绘图的迭加对比 clear t=0:pi/10:2*pi; y1=sin(t); y2=cos(t); y3= sin(t)-cos(t); plot(t,y1); hold on; %后续图形叠加显示 plot(t,y2); plot(t,y3);
Matlab绘图 (续) • 图形保持函数hold(续)
Matlab绘图 (续) • 图形分割函数 subplot 功能: 实现多个图形窗口 clear t=0:pi/10:2*pi; y1=sin(t); y2=cos(t); y3=cos(t+pi/2); y4=cos(t+pi); %将图形窗口分割成两 行两列,图形画在 第1行第1列的窗口 subplot(2,2,1); plot(t,y1); %图形画在第1行第2列 subplot(2,2,2); plot(t,y2);
Matlab绘图 (续) • 图形分割函数 subplot (续) %图形画在第2行第1列 subplot(2,2,3); plot(t,y3); %图形画在第2行第2列 subplot(2,2,2); plot(t,y4);
Matlab绘图 (续) • 图形保持函数hold(续)
Matlab绘图 (续) • 3D曲线绘图函数 plot3 功能: 实现三维曲线绘图 使用的一般格式 plot3(x1, y1, z1, 's1', x2, y2, z2, 's2'…) clear t=0:pi/50:10*pi; plot3(t,sin(t),cos(t),'r:') grid on
Matlab绘图 (续) • 其它绘图方式 - 命令格式 plot: 2D曲线绘图 plot3: 3D曲线绘图 loglog:对数坐标绘图 semilogx: 横对数坐标图 semilogy: 纵对数坐标图 plotyy: 双纵坐标图
Matlab绘图 (续) - 矩阵变量绘图 plot(Y):每列对应一条曲线 plot(x,Y): x与Y的相容向量绘图 plot(X,y):X与y相容的向量同y绘图 plot(X,Y):对应的列向量图 >> y = 1:length(peaks); >> plot(peaks,y) 注解:按行方式绘图
Matlab绘图 (续) - 虚数/复数数据绘图 plot(Z) 等价于plot(real(Z),imag(Z)) - 两纵坐标轴绘图 >> t=0:900; A=1000; a=0.005; b=0.005; >> z1=A*exp(-a*t); >> z2=sin(b*t); >> [haxes,hline1,hline2] = … plotyy(t,z1,t,z2,'semilogy','plot');
Matlab绘图 (续) • 特殊图形绘图 - 条图/面积图 bar/bar3: 2D/3D纵向条图 barh/bar3h: 2D/3D横向条图 >>Y = [5 2 1; 8 7 3; 9 8 6; 5 5 5; 4 3 2]; >> bar(Y) 或者 >> bar3(Y)
Matlab绘图 (续) >> area(Y)
Matlab绘图 (续) >> area(Y)
Matlab绘图 (续) - 饼状图 pie/pie3: 2D/3D饼状图 >> X= [19.3 22.1 51.6; 34.2 70.3 82.4; 61.4 82.9 90.8; 50.5 54.9 59.1; 29.4 36.3 47.0]; >> x=sum(X); >> explode = zeros(size(x)); >> [c,offset] = max(x); >> explode(offset) = 1;
Matlab绘图 (续) >> pie(x,eplore)
Matlab绘图 (续) - 直方图 hist: 直角坐标直方图 rose:极坐标直方图 >>yn = randn(10000,1); >> hist(yn) >> wdir = [45 90 90 45 360 335 360 270 335 270 335 335]; >> wdir = wdir * pi/180; >> rose(wdir)
Matlab绘图 (续) - 离散数据图 stem/stem3: 2D/3D离散数据图 stairs:阶梯数据图 >>alpha=.02; beta=.5; t=0:4:200; >> y=exp(-alpha*t).*cos(beta*t); >> stem(t,y) 或者 >> stem(t,y,'--sr','fill')
Matlab绘图 (续) >> 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
Matlab绘图 (续) - 方向/速度图 compass: 罗盘图 feather:羽毛图 quiver/quiver3: 2D/3D速度场图 >>wdir=[45 90 90 45 360 335 360 270 335 270 335 335]; >> knots=[6 6 8 6 3 9 6 8 9 10 14 12]; >> wdir=wdir*pi/180; >> [x,y]=pol2cart(rdir,knots); >> compass(x,y)
Matlab绘图 (续) >> theta=90:-10:0; >> r=ones(size(theta)); >> [u,v]=pol2cart(theta*pi/180,r*10); >> feather(u,v);
结束语 第十一讲预告: MATLAB绘图-II (2008年05月07日)