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

41
第第第 第第第第第第第第第 MATLAB 第第第第第第 第第第 第第第第第第第第第 第第第第第第第第4.1 第第第第第第第第 4.2 第第第第第第 4.3 第第第第第第 4.4 第第第第第第第 第第第第第第第第第第 第第 第第第第 第第第第第第 、一。 MATLAB 第第第第第 第第第第第第第第第第第第 第第第第第第第第第第 MATLAB 第第第第第第第

description

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

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

Page 1: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

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

本章主要内容如下:4.1 可视化的基本步骤4.2 二维曲线绘图4.3 三维曲线绘图4.4 图形窗功能简介

数据可视化是数据分析、系统分析的一种重要方法。 MATLAB 具有丰富且易于理解和使用的绘图指令,数据和函数的可视化是 MATLAB 的重要组成部分。

Page 2: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

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

Page 3: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

手工作图引子

找点: x=0, pi/3, pi/2, 2*pi/3, pi, …

计算函数值: y=sin(0), sin(pi/3), sin(pi/2), …

描点:在坐标系中画出这些离散点 用直线或曲线连接这些点,得到函数的大致图形

Page 4: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

Matlab 作图引子

给出离散点列: x=[0:pi/10:2*pi] 计算函数值: y=sin(x) 画图:用 matlab 二维绘图命令 plot 作出函数图形 plot(x,y)

例: >> x=[0:pi/10:2*pi];>> y=sin(x);>> plot(x,y);

Page 5: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

4.1 可视化的基本步骤1. 曲线数据准备(以二维图形为例):

选取一个参变量采样向量 计算各坐标数据向量

2. 选定图形窗及子图位置;3. 调用曲线绘图指令;4. 设置轴的范围5. 图形注释(图名、坐标名、图例、文字说明)。

Page 6: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

例用图形表示 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')

% 产生参变量采样向量% 产生数据向量

% 确定子图、线 % 型、注释等

Page 7: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

4.2 二维曲线绘图4.2.1 plot 的基本调用格式

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

Page 8: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

【例 3-1 】二维曲线绘图基本指令演示一。>> t=(0:pi/50:2*pi)';

k=0.4:0.1:1;

Y=cos(t)*k;

plot(Y)

% 生成 (101*1) 的时间采样列向量% 生成 (1*7) 的行向量% 生成 (101*7) 的矩阵

Page 9: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

4.2 二维曲线绘图4.2.1 plot 的基本调用格式

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

Page 10: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

【例 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*7) 的矩阵% 生成 (1*7) 的行向量% 生成 (101*1) 的列向量

Page 11: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

4.2 二维曲线绘图4.2.2 曲线的色彩、线型和数据点形

a) 色彩和线型线型

符号 - : -. --含义 实线 虚线 点划线 双划线

色彩 符号 b g r c m y k w含义 蓝 绿 红 青 品红 黄 黑 白

【说明】当‘ s’ 缺省时,默认设置为 曲线一律用“实线”线型。 不同曲线按表中所给前七种颜色次序着色 , 依次为蓝、绿、红等 .

Page 12: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

【例 3-3 】二维曲线绘图基本指令演示三:色彩和线型。用图形表示连续调制波形 及其包络线。 )9sin()sin( tty

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

Page 13: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

4.2 二维曲线绘图4.2.2 曲线的色彩、线型和数据点形

b) 数据点形 数据点形用来标志数据点,即可单独使用也可与色彩、线型组合使用。

符 号 含 义 符 号 含 义. 实心黑点 d 菱形符+ 十字符 h 六角星符^ 朝上三角符 o 空心圆符< 朝左三角符 p 五角星符> 朝右三角符 s 方块符v 朝下三角符 x 叉字符

Page 14: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

【例 3-4 】二维曲线绘图基本指令演示四:数据点形 ( 函数与例 3-3 相同 ) 。>> 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])

% 用蓝实线绘 y2, 用☆对 y3 进行标志

% 生成( 1*10 )数据标志点采样向量% 生成( 1*10 )数据标志点数据

Page 15: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

plot(x1,y1,s1,x2,y2,s2, ... ,xn,yn,sn)

属性选项可以省略

等价于:hold onplot(x1,y1,s1)plot(x2,y2,s2)...plot(xn,yn,sn)

扩展:一张图同时汇多个图形

hold onhold offFigure ???

Page 16: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

>> x=-pi:pi/10:pi;>> y=sin(x);>> plot(x,y,'rh:','linewidth',2, ... 'markeredgecolor','b', ... 'markerfacecolor','g')

例: 线条的粗细,字体大小,坐标轴属性等。

linewidth : 指定线条的粗细markeredgecolor: 指定标记的边缘色markerfacecolor: 指定标记表面的颜色

注: 1) 属性与属性的值是成对出现的 2) 更多属性参见 plot 的联机帮助

扩展:绘图其他属性

Page 17: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

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

a) 坐标控制指 令 含 义 指 令 含 义

axis auto 使用缺省设置 axis equal 纵、横轴为等长刻度axis ij 矩阵式坐标 axis normal 缺省矩形坐标系axis xy 普通直角坐标 axis square 正方形坐标系axis(V)V=[x1,x2,y1,y2]V=[x1,x2,y1,y2,z1,z2]

人工设定坐标范围。设定值:二维, 4 个;三维, 6 个 .

axis tight 坐标范围为数据范围axis image 纵、横轴为等长刻

度 , 且坐标框紧贴数据范围

Page 18: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

4.2.3 图形控制b) 分格线和坐标框

grid on 画出分格线 grid off 不画分格线 box on 使当前坐标呈封闭形式 box off 使当前坐标呈开启形式

【说明】缺省时,不画分格线;坐标呈封闭形式。

Page 19: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

【说明】 S 为带单引号的英文或中文字符串。

x=0:0.1:1; y=x.*exp(-x); plot(x,y);xlabel(‘x’),ylabel(‘y’) % 图形标识title(‘y=x*exp(-x)’) % 图形标识

【例 3-6 】二维曲线绘图基本指令演示: 图形标识

4.2.3 图形控制c) 图形标识

title(S) 书写图名 xlable(S) 横坐标轴名 ylable(S) 纵坐标轴名 text(xt,yt,S) 在 (xt,yt) 处写字符注释 legend(s1,s2,…) 在图右上角建立图例

Page 20: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

4.2 二维曲线绘图

利用精细指令可以对图形进行精细控制,例如在图形指定位置显示各种字符,公式等。

4.2.3 图形控制c) 图形标识

精细指令形式

Page 21: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

4.2 二维曲线绘图4.2.3 图形控制

c) 图形标识 精细指令形式

指 令 字符 指 令 字符 指 令 含义 arg 取值 举例\alpha \omega ^{arg} 上标 任何合法字符 '\ite^{-\

alphat}'\beta \Omega _{arg} 下标 任何合法字符 '\rmt_{s}'

\xi \neq \arg 风格 bf( 黑体 )it(斜体 )rm( 正体 )

\int \times \fontsize{arg}

大小 正整数( 缺省值为10)

'\fontsize{12}sin'

示例结果 :(1) ;(2)ts ;(3)sinte

Page 22: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

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)')

例 3-6 精细指令示例

Page 23: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

4.2.3 图形控制d) 双纵坐标图

把同一自变量的两个不同量纲、不同数量级的函数绘制在同一张图上,即为双纵坐标图。 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 指定的不同形式的两条曲线。

【说明】1) 轴的范围、刻度自动产生。2) FUN,FUN1,FUN2 为 MATLAB 中所有接受 X-Y 数据对的二维绘图指

令 .

Page 24: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

【例 3-7 】已知系统单位阶跃响应和单位脉冲响应分别为

其中 , . 用双纵坐标图画出这两个函数在区间 [0,4] 上的曲线 .

2

2

1arctansin

111 tey d

tn

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)

tedtdy

dtn n

sin1 2

0.5rad/s,5,1 2 nnd

Page 25: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

4.2 二维曲线绘图4.2.3 图形控制

e) 多子图 MATLAB允许用户在同一个图形窗里布置几幅独立的子图。

subplot(m,n,k)

使 (m×n)幅子图中的第 k幅成为当前图 . subplot(‘position’,[left bottom widt hight])

在指定位置开辟子图,并成为当前图 .【说明】1) subplot(m,n,k) 表示图形窗有 (m×n)幅子图 ,k 是子图编号。序号编排原则是 : 左上方为第一幅 , 向右向下依次排号。2) subplot(‘position’,[left bottom widt hight]) 产生的子图位置由人工指定,指定位置的四元组采用规划的标称单位,即认为图形窗的高、宽的取值范围都是 [0 , 1] 。

Page 26: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

4.2 二维曲线绘图4.2.3 图形控制

e) 多子图 MATLAB允许用户在同一个图形窗里布置几幅独立的子图。

subplot(m,n,k)

使 (m×n)幅子图中的第 k幅成为当前图 . subplot(‘position’,[left bottom widt hight])

在指定位置开辟子图,并成为当前图 .【说明】1) subplot(m,n,k) 表示图形窗有 (m×n)幅子图 ,k 是子图编号。序号编排原则是 : 左上方为第一幅 , 向右向下依次排号。2) subplot(‘position’,[left bottom widt hight]) 产生的子图位置由人工指定,指定位置的四元组采用归一化的标称单位,即认为图形窗的高、宽的取值范围都是 [0 , 1] 。

Page 27: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

【例 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])

子图一子图二子图三

Page 28: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

4.3 三维曲线绘图4.3.1 plot3 的基本调用格式

plot3 在三维曲线绘图指令中是最易理解的,其使用格式与 plot 十分相似。具体如下: plot3(X,Y,Z,’s’) plot3(X1,Y1,Z1,’s1’,X2,Y2,Z2,’s2’,…)

【说明】1) X,Y,Z 为同维向量时 , 绘制以 X,Y,Z 元素为 x,y,z 坐标的三维曲线。2) X,Y,Z 为同维矩阵时,以 X,Y,Z 对应列元素为 x,y,z 坐标分别绘制曲线,曲线条数等于矩阵列数。3) s,s1,s2 的意义与二维情况完全相同,可以缺省。4) (X1,Y1,Z1,’s1’),(X2,Y2,Z2,’s2’) 的结构和作用与 (X,Y,Z,’s’) 相同。

Page 29: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

【例 3-13 】三维曲线绘图基本指令演示一: plot3

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 onlegend(' 链 ','宝石 ')

三维曲线绘图(蓝实线和蓝菱形)在右上角建立图例

Page 30: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

4.3 三维曲线绘图4.3.2 三维网线图和曲面图

plot3只能绘制单参数的三维曲线图,而三维网线图和曲面图则比较复杂,主要表现于绘图数据的准备,图形的色彩、明暗、光照和视点处理。1. 数据准备 画函数 z=f(x,y) 所代表的三维空间曲面,需要做以下数据准备:

a) 确定自变量 x,y的取值范围和取值间隔。 x=x1:dx:x2;

y=y1:dy:y2

Page 31: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

4.3.2 三维网线图和曲面图1. 数据准备

b) 构成 xy平面上的自变量“格点”阵 。 [X,Y]=meshgrid(x,y)

c) 计 算 在自变 量 采 样“格点”上的函数值,即 Z=f(X,Y)

【说明】 X 由 x 按行复制而成,其行数为 y 元素的个数; Y 由 y 按列复制而成,其列数为 x元素的个数。

x=-4:4y=0:4

Page 32: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

4.3 三维曲线绘图4.3.2 三维网线图和曲面图

2. 网线、曲面图基本指令格式a) 网线图

mesh(Z) 以 Z 矩阵列、行下标为 x , y轴自变量,画网线图 . mesh(X,Y,Z) 最常用的网线图调用格式。 mesh(X,Y,Z,C) 最完整的调用格式,画由 C 指定用色的网线图。

【说明 】a) 在最完整调用格式中,四个输入宗量都是维数相同的矩阵。 X

、 Y 是自变量“格点”矩阵, Z 是格点上函数矩阵; C 是指定各点用色的矩阵。 C 缺省时,默认用色矩阵为 Z 。b) 单输入宗量格式时, Z 矩阵列下标为 x 轴的“自变量”; Z 的行下标为 y 轴“自变量”。

Page 33: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

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

Page 34: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

4.3.2 三维网线图和曲面图2. 网线、曲面图基本指令格式

b) 曲面图 surf(Z) 以 Z 矩阵列、行下标为 x,y 轴自变量,画曲面图。 surf(X,Y,Z) 最常用的曲面图调用格式。 surf(X,Y,Z,C) 最完整的调用格式,画由 C 指定用色的曲面图。有关调用的说明同 mesh 指令。【例 3-14b 】三维曲面绘图指令演示:

surf

x=-4:4;y=x;[X,Y]=meshgrid(x,y);Z=X.^2+Y.^2;surf(X,Y,Z); 画三维曲面图

Page 35: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

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-14 】网线、曲面、曲线图比较 :

Page 36: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

4.3 三维曲线绘图4.3.2 三维网线图和曲面图

3. 图形的透视 曲面图 MATLAB 在采用缺省设置画 mesh 图形时,对叠压在后面的图形采取了消隐措施。采用如下指令可控制消隐:

hidden off 透视被叠压的图形 hidden 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 offsubplot(1,2,2),mesh(x,y,z)hidden onaxis([-3,3,-2,2,-0.5,1.0])

% 透视% 不透视

Page 37: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

透视 不透视

Page 38: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

图形透视例子% 【例 3-1 6】透视演示和各种画图工具应用[X0,Y0,Z0]=sphere(30);X=2*X0;Y=2*Y0;Z=2*Z0;surf(X0,Y0,Z0);shading interphold on,mesh(X,Y,Z),colormap(hot),hold offhidden offaxis equal,axis off

% 透视% 不透视

Page 39: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

4.4 图形窗功能简介 图形窗除了用于显示图形,还可对所显示的图形进行编辑。下图为图形窗工具条上 MATLAB所特有的七个按键,它们用来对图形进行交互操作。

图形对象编辑

添加直线

添加文字添加箭头 放大

缩小三维图形旋转

Page 40: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

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

Page 41: 第四章   数据及函数的可视化

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

MATLAB 编程应用基础

练 习1. 命令窗口中,键入: demo ,出现MATLAB 的 demo演示窗口,然后选择: MATLAB 下的 Graphics ,依次选取其中的 Overview of Features (playback) 、 2-D

Plots 、 3-D Plots 两个示例,了解 MATLAB 有关绘图的操作。2. 自行上机把这次课上例子练习一下