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

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

Upload: huey

Post on 16-Mar-2016

91 views

Category:

Documents


3 download

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

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. 自行上机把这次课上例子练习一下