1 / 41

第四章 数据及函数的可视化

第四章 数据及函数的可视化. 数据可视化是数据分析、系统分析的一种重要方法。 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 , ….

huey
Download Presentation

第四章 数据及函数的可视化

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第四章 数据及函数的可视化 数据可视化是数据分析、系统分析的一种重要方法。MATLAB具有丰富且易于理解和使用的绘图指令,数据和函数的可视化是MATLAB的重要组成部分。 本章主要内容如下: 4.1 可视化的基本步骤 4.2 二维曲线绘图 4.3 三维曲线绘图 4.4 图形窗功能简介

  2. 引子 如何画出 y=sin(x) 在 [0, 2*pi] 上的图像?

  3. 引子 • 手工作图 • 找点: x=0, pi/3, pi/2, 2*pi/3, pi, … • 计算函数值: y=sin(0), sin(pi/3), sin(pi/2), … • 描点:在坐标系中画出这些离散点 • 用直线或曲线连接这些点,得到函数的大致图形

  4. 例:>>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)

  5. 4.1 可视化的基本步骤 1. 曲线数据准备(以二维图形为例): • 选取一个参变量采样向量 • 计算各坐标数据向量 2.选定图形窗及子图位置; 3. 调用曲线绘图指令; 4. 设置轴的范围 5. 图形注释(图名、坐标名、图例、文字说明)。

  6. 例用图形表示 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') %产生参变量采样向量 %产生数据向量 %确定子图、线%型、注释等

  7. 4.2 二维曲线绘图 4.2.1 plot的基本调用格式 • plot(X,’s’) • X为实向量时,以该向量元素的下标为横坐标,元素值为纵坐标画一条连续曲线。 • X为实矩阵时,则按列绘制每列元素值相对其下标的曲线,图中曲线数等于X阵列数。 • X为复数矩阵时,则按列绘制每列以元素实部和虚部为横、纵坐标绘制多条曲线。 • 用来指定线型、色彩等,缺省时为MATLAB默认设置。

  8. >> 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】二维曲线绘图基本指令演示一。

  9. 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’)中相同。

  10. 【例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)的矩阵

  11. 4.2 二维曲线绘图 4.2.2 曲线的色彩、线型和数据点形 • 色彩和线型 • 【说明】当‘s’缺省时,默认设置为 • 曲线一律用“实线”线型。 • 不同曲线按表中所给前七种颜色次序着色,依次为蓝、绿、红等.

  12. 【例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

  13. 4.2 二维曲线绘图 4.2.2 曲线的色彩、线型和数据点形 • 数据点形 • 数据点形用来标志数据点,即可单独使用也可与色彩、线型组合使用。

  14. >> 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相同)。

  15. 扩展:一张图同时汇多个图形 • 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???

  16. 例: >>x=-pi:pi/10:pi; >>y=sin(x); >>plot(x,y,'rh:','linewidth',2, ... 'markeredgecolor','b', ... 'markerfacecolor','g') 扩展:绘图其他属性 • 线条的粗细,字体大小,坐标轴属性等。 linewidth: 指定线条的粗细 markeredgecolor: 指定标记的边缘色 markerfacecolor: 指定标记表面的颜色 注:1) 属性与属性的值是成对出现的 2) 更多属性参见 plot 的联机帮助

  17. 4.2 二维曲线绘图 4.2.3 图形控制 • 在一般绘图时可采用MATLAB的缺省设置,也能得到满意的画面,但用户也可根据需要改变缺省设置。 • 坐标控制

  18. 【说明】缺省时,不画分格线;坐标呈封闭形式。【说明】缺省时,不画分格线;坐标呈封闭形式。 4.2.3 图形控制 • 分格线和坐标框 • grid on 画出分格线 • grid off 不画分格线 • box on 使当前坐标呈封闭形式 • box off 使当前坐标呈开启形式

  19. 【例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为带单引号的英文或中文字符串。

  20. 4.2 二维曲线绘图 • 4.2.3 图形控制 • 图形标识 • 精细指令形式 利用精细指令可以对图形进行精细控制,例如在图形指定位置显示各种字符,公式等。

  21. 4.2 二维曲线绘图 • 4.2.3 图形控制 • 图形标识 • 精细指令形式 示例结果:(1) ;(2)ts ;(3)sin

  22. 例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)')

  23. 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数据对的二维绘图指令.

  24. 【例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)

  25. 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]。

  26. 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]。

  27. 【例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]) 子图一 子图二 子图三

  28. 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’)相同。

  29. 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

  30. 4.3 三维曲线绘图 • 4.3.2 三维网线图和曲面图 • plot3只能绘制单参数的三维曲线图,而三维网线图和曲面图则比较复杂,主要表现于绘图数据的准备,图形的色彩、明暗、光照和视点处理。 • 数据准备 • 画函数 z=f(x,y) 所代表的三维空间曲面,需要做以下数据准备: • 确定自变量x,y的取值范围和取值间隔。 • x=x1:dx:x2; • y=y1:dy:y2

  31. 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)

  32. 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轴“自变量”。

  33. 【例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)坐标的变化。

  34. 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

  35. 【例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 绘曲面图 绘网线图 绘曲线图

  36. %【例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 消隐被叠压的图形

  37. 透视 不透视

  38. %【例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 % 透视 %不透视 图形透视例子

  39. 添加直线 图形对象编辑 三维图形旋转 缩小 添加文字 添加箭头 放大 4.4 图形窗功能简介 图形窗除了用于显示图形,还可对所显示的图形进行编辑。下图为图形窗工具条上MATLAB所特有的七个按键,它们用来对图形进行交互操作。

  40. 下图中左图是图形窗里的原始图形,右图是经过图形窗编辑后的图形。下图中左图是图形窗里的原始图形,右图是经过图形窗编辑后的图形。

  41. 练 习 • 命令窗口中,键入:demo,出现MATLAB的demo演示窗口,然后选择:MATLAB下的Graphics,依次选取其中的Overview of Features (playback)、2-D Plots、3-D Plots两个示例,了解MATLAB有关绘图的操作。 • 自行上机把这次课上例子练习一下

More Related