410 likes | 570 Views
第四章 数据及函数的可视化. 数据可视化是数据分析、系统分析的一种重要方法。 MATLAB 具有丰富且易于理解和使用的绘图指令,数据和函数的可视化是 MATLAB 的重要组成部分。. 本章主要内容如下: 4.1 可视化的基本步骤 4.2 二维曲线绘图 4.3 三维曲线绘图 4.4 图形窗功能简介. 引子. 如何画出 y=sin(x) 在 [0, 2* pi] 上的图像?. 引子. 手工作图. 找点: x=0 , pi/3 , pi/2 , 2*pi/3 , pi , ….
E N D
第四章 数据及函数的可视化 数据可视化是数据分析、系统分析的一种重要方法。MATLAB具有丰富且易于理解和使用的绘图指令,数据和函数的可视化是MATLAB的重要组成部分。 本章主要内容如下: 4.1 可视化的基本步骤 4.2 二维曲线绘图 4.3 三维曲线绘图 4.4 图形窗功能简介
引子 如何画出 y=sin(x) 在 [0, 2*pi] 上的图像?
引子 • 手工作图 • 找点: x=0, pi/3, pi/2, 2*pi/3, pi, … • 计算函数值: y=sin(0), sin(pi/3), sin(pi/2), … • 描点:在坐标系中画出这些离散点 • 用直线或曲线连接这些点,得到函数的大致图形
例:>>x=[0:pi/10:2*pi]; >>y=sin(x); >>plot(x,y); 引子 • Matlab 作图 • 给出离散点列: x=[0:pi/10:2*pi] • 计算函数值: y=sin(x) • 画图:用 matlab 二维绘图命令 plot 作出函数图形plot(x,y)
4.1 可视化的基本步骤 1. 曲线数据准备(以二维图形为例): • 选取一个参变量采样向量 • 计算各坐标数据向量 2.选定图形窗及子图位置; 3. 调用曲线绘图指令; 4. 设置轴的范围 5. 图形注释(图名、坐标名、图例、文字说明)。
例用图形表示 y=sin(t)sin(9t). t=(0:100)/100*pi; y=sin(t).*sin(9*t); subplot(2,1,1),plot(t,y,'r.'),axis([0,pi,-1,1]),title('子图1') subplot(2,1,2),plot(t,y),axis([0,pi,-1,1]),title('子图2') %产生参变量采样向量 %产生数据向量 %确定子图、线%型、注释等
4.2 二维曲线绘图 4.2.1 plot的基本调用格式 • plot(X,’s’) • X为实向量时,以该向量元素的下标为横坐标,元素值为纵坐标画一条连续曲线。 • X为实矩阵时,则按列绘制每列元素值相对其下标的曲线,图中曲线数等于X阵列数。 • X为复数矩阵时,则按列绘制每列以元素实部和虚部为横、纵坐标绘制多条曲线。 • 用来指定线型、色彩等,缺省时为MATLAB默认设置。
>> t=(0:pi/50:2*pi)'; k=0.4:0.1:1; Y=cos(t)*k; plot(Y) %生成(101*1)的时间采样列向量 %生成(1*7)的行向量 %生成(101*7)的矩阵 【例3-1】二维曲线绘图基本指令演示一。
4.2 二维曲线绘图 4.2.1 plot的基本调用格式 • plot(X,Y,’s’) • X、Y是同维向量时,绘制X、Y元素为横、纵坐标的曲线。 • X是列向量,Y是与X等行的矩阵时,以X为横坐标,按Y的列数绘制多条曲线。 • X是矩阵,Y是向量时,以Y为纵坐标按X的列数绘制多条曲线。 • X、Y是同维矩阵时,以X,Y对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵列数 • s的意义与其在plot(X,’s’)中相同。
【例3-2】二维曲线绘图基本指令演示二:plot(t,Y)、plot(Y,t) 所绘图形的比较。 >> t=(0:pi/50:2*pi)'; k=0.4:0.1:1; Y=cos(t)*k; plot(t,y) %生成(101*1)的列向量 %生成(1*7)的行向量 %生成(101*7)的矩阵
4.2 二维曲线绘图 4.2.2 曲线的色彩、线型和数据点形 • 色彩和线型 • 【说明】当‘s’缺省时,默认设置为 • 曲线一律用“实线”线型。 • 不同曲线按表中所给前七种颜色次序着色,依次为蓝、绿、红等.
【例3-3】二维曲线绘图基本指令演示三:色彩和线型。【例3-3】二维曲线绘图基本指令演示三:色彩和线型。 用图形表示连续调制波形 及其包络线。 >> t=(0:pi/100:pi)'; y1=sin(t)*[1,-1]; y2=sin(t).*sin(9*t); plot(t,y1,'r:',t,y2,'b') axis([0,pi,-1,1]) %生成(101*1)的时间采样列向量 %生成(101*2)的矩阵(包络线函数值) %生成(101*1)的调制波列向量 %用红虚线绘y1,用蓝实线绘y2
4.2 二维曲线绘图 4.2.2 曲线的色彩、线型和数据点形 • 数据点形 • 数据点形用来标志数据点,即可单独使用也可与色彩、线型组合使用。
>> t=(0:pi/100:pi)'; y2=sin(t).*sin(9*t); t1=pi*(0:9)/9; y3=sin(t1).*sin(9*t1); plot(t,y2,'b',t1,y3,'bp') axis([0,pi,-1,1]) %生成(1*10)数据标志点采样向量 %生成(1*10)数据标志点数据 %用蓝实线绘y2,用☆对y3进行标志 【例3-4】二维曲线绘图基本指令演示四:数据点形(函数与例3-3相同)。
扩展:一张图同时汇多个图形 • plot(x1,y1,s1,x2,y2,s2, ... ,xn,yn,sn) 等价于: hold on plot(x1,y1,s1) plot(x2,y2,s2) ... plot(xn,yn,sn) 属性选项 可以省略 hold on hold off Figure???
例: >>x=-pi:pi/10:pi; >>y=sin(x); >>plot(x,y,'rh:','linewidth',2, ... 'markeredgecolor','b', ... 'markerfacecolor','g') 扩展:绘图其他属性 • 线条的粗细,字体大小,坐标轴属性等。 linewidth: 指定线条的粗细 markeredgecolor: 指定标记的边缘色 markerfacecolor: 指定标记表面的颜色 注:1) 属性与属性的值是成对出现的 2) 更多属性参见 plot 的联机帮助
4.2 二维曲线绘图 4.2.3 图形控制 • 在一般绘图时可采用MATLAB的缺省设置,也能得到满意的画面,但用户也可根据需要改变缺省设置。 • 坐标控制
【说明】缺省时,不画分格线;坐标呈封闭形式。【说明】缺省时,不画分格线;坐标呈封闭形式。 4.2.3 图形控制 • 分格线和坐标框 • grid on 画出分格线 • grid off 不画分格线 • box on 使当前坐标呈封闭形式 • box off 使当前坐标呈开启形式
【例3-6】二维曲线绘图基本指令演示: 图形标识 x=0:0.1:1; y=x.*exp(-x); plot(x,y); xlabel(‘x’),ylabel(‘y’) %图形标识 title(‘y=x*exp(-x)’) %图形标识 • 4.2.3 图形控制 • 图形标识 • title(S) 书写图名 • xlable(S) 横坐标轴名 • ylable(S) 纵坐标轴名 • text(xt,yt,S)在(xt,yt) 处写字符注释 • legend(s1,s2,…) 在图右上角建立图例 • 【说明】S为带单引号的英文或中文字符串。
4.2 二维曲线绘图 • 4.2.3 图形控制 • 图形标识 • 精细指令形式 利用精细指令可以对图形进行精细控制,例如在图形指定位置显示各种字符,公式等。
4.2 二维曲线绘图 • 4.2.3 图形控制 • 图形标识 • 精细指令形式 示例结果:(1) ;(2)ts ;(3)sin
例3-6 精细指令示例 t=pi*(0:1/100:1);beta=asin(1); y=1-exp(-2*t).*sin(5*t+beta); plot(t,y) text(3.0,1.14,'\bf\alpha = 2') text(3.0,1.10,'\rm\omega = 5') xlabel('\fontsize{14}\bft') ylabel('\fontsize{14}y') title('\rm y=1-e^{-\alphat}sin(\omegat+\beta)')
4.2.3 图形控制 • 双纵坐标图 把同一自变量的两个不同量纲、不同数量级的函数绘制在同一张图上,即为双纵坐标图。 • plotyy(X1,Y1,X2,Y2) 以左右不同纵轴绘制X1-Y1,X2-Y2两条曲线。 • plotyy(X1,Y1,X2,Y2,FUN) 以左右不同纵轴把X1-Y1,X2-Y2绘制成FUN指定形式的两条曲线。 • plotyy(X1,Y1,X2,Y2,FUN1,FUN2) 以左右不同纵轴把X1-Y1,X2-Y2绘制成FUN1,FUN2指定的不同形式的两条曲线。 【说明】 • 轴的范围、刻度自动产生。 • FUN,FUN1,FUN2为MATLAB中所有接受X-Y数据对的二维绘图指令.
【例3-7】已知系统单位阶跃响应和单位脉冲响应分别为【例3-7】已知系统单位阶跃响应和单位脉冲响应分别为 其中, . 用双纵坐标图画出这两个函数在区间[0,4]上的曲线. t=0:0.02:3; xi=0.5;wn=5; sxi=sqrt(1-xi^2); sita=atan(sxi/xi); wd=wn*sxi; y1=1-exp(-xi*wn*t).*sin(wd*t+sita)/sxi; y2=wn*exp(-xi*wn*t).*sin(wd*t)/sxi; plotyy(t,y1,t,y2)
4.2 二维曲线绘图 • 4.2.3 图形控制 • 多子图 • MATLAB允许用户在同一个图形窗里布置几幅独立的子图。 • subplot(m,n,k) • 使(m×n)幅子图中的第k幅成为当前图. • subplot(‘position’,[left bottom widt hight]) • 在指定位置开辟子图,并成为当前图. • 【说明】 • subplot(m,n,k) 表示图形窗有(m×n)幅子图,k是子图编号。序号编排原则是:左上方为第一幅,向右向下依次排号。 • subplot(‘position’,[left bottom widt hight]) 产生的子图位置由人工指定,指定位置的四元组采用规划的标称单位,即认为图形窗的高、宽的取值范围都是[0,1]。
4.2 二维曲线绘图 • 4.2.3 图形控制 • 多子图 • MATLAB允许用户在同一个图形窗里布置几幅独立的子图。 • subplot(m,n,k) • 使(m×n)幅子图中的第k幅成为当前图. • subplot(‘position’,[left bottom widt hight]) • 在指定位置开辟子图,并成为当前图. • 【说明】 • subplot(m,n,k)表示图形窗有(m×n)幅子图,k是子图编号。序号编排原则是:左上方为第一幅,向右向下依次排号。 • subplot(‘position’,[left bottom widt hight]) 产生的子图位置由人工指定,指定位置的四元组采用归一化的标称单位,即认为图形窗的高、宽的取值范围都是[0,1]。
【例3-8】二维曲线绘图基本指令演示:多子图 t=(pi*(0:1000)/1000)'; y1=sin(t);y2=sin(10*t);y12=sin(t).*sin(10*t); subplot(2,2,1),plot(t,y1);axis([0,pi,-1,1]) subplot(2,2,2),plot(t,y2);axis([0,pi,-1,1]) subplot('position',[0.2,0.05,0.6,0.45]) plot(t,y12,'b-',t,[y1,-y1],'r:');axis([0,pi,-1,1]) 子图一 子图二 子图三
4.3 三维曲线绘图 • 4.3.1 plot3的基本调用格式 • plot3在三维曲线绘图指令中是最易理解的,其使用格式与plot十分相似。具体如下: • plot3(X,Y,Z,’s’) • plot3(X1,Y1,Z1,’s1’,X2,Y2,Z2,’s2’,…) • 【说明】 • X,Y,Z为同维向量时,绘制以X,Y,Z元素为x,y,z坐标的三维曲线。 • X,Y,Z为同维矩阵时,以X,Y,Z对应列元素为x,y,z坐标分别绘制曲线,曲线条数等于矩阵列数。 • s,s1,s2的意义与二维情况完全相同,可以缺省。 • (X1,Y1,Z1,’s1’),(X2,Y2,Z2,’s2’)的结构和作用与(X,Y,Z,’s’)相同。
t=(0:0.02:2)*pi;x=sin(t);y=cos(t);z=cos(2*t); plot3(x,y,z,'b-',x,y,z,'bd') box on legend('链','宝石') 三维曲线绘图(蓝实线和蓝菱形) 在右上角建立图例 【例3-13】三维曲线绘图基本指令演示一:plot3
4.3 三维曲线绘图 • 4.3.2 三维网线图和曲面图 • plot3只能绘制单参数的三维曲线图,而三维网线图和曲面图则比较复杂,主要表现于绘图数据的准备,图形的色彩、明暗、光照和视点处理。 • 数据准备 • 画函数 z=f(x,y) 所代表的三维空间曲面,需要做以下数据准备: • 确定自变量x,y的取值范围和取值间隔。 • x=x1:dx:x2; • y=y1:dy:y2
x=-4:4 y=0:4 • 4.3.2 三维网线图和曲面图 • 数据准备 • 构成xy平面上的自变量“格点”阵。 • [X,Y]=meshgrid(x,y) • 【说明】X由x按行复制而成,其行数为y元素的个数;Y由y按列复制而成,其列数为x元素的个数。 • 计算在自变量采样“格点”上的函数值,即 • Z=f(X,Y)
4.3 三维曲线绘图 • 4.3.2 三维网线图和曲面图 • 网线、曲面图基本指令格式 • 网线图 • mesh(Z) 以Z矩阵列、行下标为x,y轴自变量,画网线图. • mesh(X,Y,Z) 最常用的网线图调用格式。 • mesh(X,Y,Z,C) 最完整的调用格式,画由C指定用色的网线图。 • 【说明】 • 在最完整调用格式中,四个输入宗量都是维数相同的矩阵。X、Y是自变量“格点”矩阵,Z是格点上函数矩阵;C是指定各点用色的矩阵。C缺省时,默认用色矩阵为Z。 • 单输入宗量格式时,Z矩阵列下标为x轴的“自变量”;Z的行下标为y轴“自变量”。
【例3-14a】三维网线绘图指令演示:mesh clf,x=-4:4;y=x; [X,Y]=meshgrid(x,y) Z=X.^2+Y.^2; mesh(X,Y,Z); colormap(cool) xlabel('X'),ylabel('y'),zlabel('z') 将mesh(X,Y,Z)改为mesh(Z),其网线图如左图所示(注意X、Y)坐标的变化。
x=-4:4;y=x; [X,Y]=meshgrid(x,y); Z=X.^2+Y.^2; surf(X,Y,Z); 画三维曲面图 • 4.3.2 三维网线图和曲面图 • 网线、曲面图基本指令格式 • 曲面图 • surf(Z) 以Z矩阵列、行下标为x,y轴自变量,画曲面图。 • surf(X,Y,Z) 最常用的曲面图调用格式。 • surf(X,Y,Z,C) 最完整的调用格式,画由C指定用色的曲面图。 有关调用的说明同mesh指令。 【例3-14b】三维曲面绘图指令演示:surf
【例3-14】网线、曲面、曲线图比较: x=-4:4;y=x;[X,Y]=meshgrid(x,y); Z=X.^2+Y.^2; subplot(1,3,1),surf(X,Y,Z); subplot(1,3,2),mesh(X,Y,Z); subplot(1,3,3),plot3(x,y,x.^2+y.^2),box on 绘曲面图 绘网线图 绘曲线图
%【例3-15】透视演示 clf,[x,y]=meshgrid(-3:0.1:3,-2:0.1:2); z=(x.^2+2*x).*exp(-x.^2-y.^2-x.*y); subplot(1,2,1),mesh(x,y,z),axis([-3,3,-2,2,-0.5,1.0]) hidden off subplot(1,2,2),mesh(x,y,z) hidden on axis([-3,3,-2,2,-0.5,1.0]) % 透视 %不透视 4.3 三维曲线绘图 • 4.3.2 三维网线图和曲面图 • 图形的透视 • 曲面图MATLAB在采用缺省设置画mesh图形时,对叠压在后面的图形采取了消隐措施。采用如下指令可控制消隐: • hidden off 透视被叠压的图形 • hidden on 消隐被叠压的图形
透视 不透视
%【例3-16】透视演示和各种画图工具应用 [X0,Y0,Z0]=sphere(30); X=2*X0;Y=2*Y0;Z=2*Z0; surf(X0,Y0,Z0); shading interp hold on,mesh(X,Y,Z),colormap(hot),hold off hidden off axis equal,axis off % 透视 %不透视 图形透视例子
添加直线 图形对象编辑 三维图形旋转 缩小 添加文字 添加箭头 放大 4.4 图形窗功能简介 图形窗除了用于显示图形,还可对所显示的图形进行编辑。下图为图形窗工具条上MATLAB所特有的七个按键,它们用来对图形进行交互操作。
下图中左图是图形窗里的原始图形,右图是经过图形窗编辑后的图形。下图中左图是图形窗里的原始图形,右图是经过图形窗编辑后的图形。
练 习 • 命令窗口中,键入:demo,出现MATLAB的demo演示窗口,然后选择:MATLAB下的Graphics,依次选取其中的Overview of Features (playback)、2-D Plots、3-D Plots两个示例,了解MATLAB有关绘图的操作。 • 自行上机把这次课上例子练习一下