matlab 第六章 数据和函数的可视化.docx

上传人:b****8 文档编号:9399339 上传时间:2023-02-04 格式:DOCX 页数:60 大小:2.39MB
下载 相关 举报
matlab 第六章 数据和函数的可视化.docx_第1页
第1页 / 共60页
matlab 第六章 数据和函数的可视化.docx_第2页
第2页 / 共60页
matlab 第六章 数据和函数的可视化.docx_第3页
第3页 / 共60页
matlab 第六章 数据和函数的可视化.docx_第4页
第4页 / 共60页
matlab 第六章 数据和函数的可视化.docx_第5页
第5页 / 共60页
点击查看更多>>
下载资源
资源描述

matlab 第六章 数据和函数的可视化.docx

《matlab 第六章 数据和函数的可视化.docx》由会员分享,可在线阅读,更多相关《matlab 第六章 数据和函数的可视化.docx(60页珍藏版)》请在冰豆网上搜索。

matlab 第六章 数据和函数的可视化.docx

matlab第六章数据和函数的可视化

内容简介

本书由纸质媒体和电子媒体有机结合而成。

纸质媒体便于读者进行系统、全面、长时间连续地阅读,便于随心的翻阅、浏览;而电子媒体向读者提供色彩信息、动态交互的软件环境,提供读者实践本书内容所需的各种文件。

本书第一章系统讲述MATLAB6.5的集成工作平台,引导读者初会MATLAB基本用法。

第二、三章系统叙述MATLAB6.1的四大基本数据类型(数值数组、字符串数组、元胞数组、构架数组),至于其它扩展数据类型(函数句柄、符号数据、内联函数、unit数组、稀疏类)则另辟章节专述。

此后,本书用九个独立章分述MATLAB6.5的数值计算、符号计算、函数和数据可视、面向对象编程、GUI交互操作界面设计、EXE独立应用程序生成、实现不同软件平台交互的API、M-book数据图形文字环境集成等八大通用功能。

本书用专门的一章深入浅出地阐明SIMULINK的分层建模、仿真功能、与MATLAB交互的功能。

全书包含390多个计算范例。

所有算例的程序是可靠、完整的。

读者可以在自己的MATLAB环境中完全准确地重现本书所提供的算例结果。

算例的举一反三,将使读者很快掌握要领,从模仿走向灵活应用。

书中正文(包括算例)所涉及的指令全部罗列在附录的“A索引”中,用户很容易根据关键字符找到相关的正文说明和算例应用。

本书随带包含700多个文件的光盘。

光盘文件包含:

可直接在Notebook中运行的全部算例的M-bookDOC文件;可在MATLAB环境中直接运行的算例M和MDL文件;可供读者实践MATLAB编译器及API的所有文件;可在PowrPoint中放映幻灯的PPT文件。

它们不仅有效地提供了纸质媒体所不具备的交互能力和色彩感染力,而且弥补了纸质媒体没有SIMULINK模型源码文件、没有PPT源码文件、没有编译源文件和验证文件的缺陷。

本书既可作为理工科院校研究生、本科生系统学习的教材,又可以作为广大科技工作者掌握和精通MATLAB的自学用书和使用手册。

作者简介

张志涌

1944年出生于无锡;教授,获政府专项津贴,IEEE高级会员,中国电子学会高级会员,江苏省自动化学会理事、网络与系统专委会主委;1967年毕业于清华大学自动控制系,1982年初在上海交通大学获控制理论硕士学位,1989—90年在荷兰王国Eindhoven技术大学研修系统辨识、故障诊断;主持并完成国家自然科学基金、省部基金及科研项目近十项,发表论文50余篇,著作1本。

现主要从事自动控制教学和计算机控制、计算机仿真、故障诊断等研究。

1989年在荷兰用MATLAB3.0研究系统辩识和故障诊断;1992年对MATLAB3.0实现汉化并编写了相应讲义;在1994、95年借助于MATLAB3.5、4.0先后完成国家自然科学基金和国家教委留学生基金课题研究;1996年在省基金支持下从事MATLAB4.2c建立仿真实验室的研究,并于1997年编写出版《掌握和精通MATLAB》;1997年底获原邮电部预研经费资助开始了以MATLAB5.x为工具的智能技术研究。

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

视觉是人们感受世界、认识自然的最重要依靠。

数据可视化的目的在于:

通过图形,从一堆杂乱的离散数据中观察数据间的内在关系,感受由图形所传递的内在本质。

MATLAB一向注重数据的图形表示,并不断地采用新技术改进和完备其可视化功能。

本章将系统地阐述:

离散数据表示成图形的基本机理;曲线、曲面绘制的基本技法和指令;特殊图形的生成和使用示例;如何使用线型、色彩、数据点标记凸现不同数据的特征;如何利用着色、灯光照明、反射效果、材质体现和透明度处理渲染、烘托表现高维函数的性状;如何生成和运用标识,画龙点睛般地注释图形;如何显示和转换unit8、unit16、double三种不同数据类型所体现的变址、灰度和真彩图象,如何读写各种标准图象格式文件;如何通过图形窗的交互操作对图形进行修饰、调整;如何打印和输出图形文件。

本章的图形指令只涉及MATLAB的“高层”绘图指令。

这种指令的形态和格式友善,易于理解和使用。

整章内容遵循由浅入深、由基本到高级、由算例带归纳的原则。

所有算例都是运行实例,易于读者实践试验,并从中掌握一般规律。

MATLAB从5.x向6.x版本升级后,旧版中的本章全部内容几乎可以不加修改地用于6.x版。

此外,本章新版为适应升级增加了或改变了如下内容:

●MATLAB从6.0版起,图形对象“面”、“块”、“象”具备了透明属性,进一步增强了计算结果可视化的感染力。

为此,本章专设第6.5.4节,详细阐述透明度处理的机理和指令协调细节。

●在MATLAB升级过程中,专门用于图像数据存储的unit8,unit16数据类型进一步完善。

对此,本章专辟第6.6.3节说明这种数据类型的特点和使用注意事项。

●本章还对升级后的图形窗界面的编辑功能进行了新的全面阐述(见第6.7节)。

引导

离散数据和离散函数的可视化

【例6.1.1-1】用图形表示离散函数

n=0:

12;

y=1./abs(n-6);

plot(n,y,'r*','MarkerSize',20)

gridon

Warning:

Dividebyzero.

图6.1-1

连续函数的可视化

【例6.1.2-1】用图形表示连续调制波形

t1=(0:

11)/11*pi;%<1>

y1=sin(t1).*sin(9*t1);

t2=(0:

100)/100*pi;%<3>

y2=sin(t2).*sin(9*t2);

subplot(2,2,1),plot(t1,y1,'r.'),axis([0,pi,-1,1]),title('子图

(1)')

subplot(2,2,2),plot(t2,y2,'r.'),axis([0,pi,-1,1]),title('子图

(2)')

subplot(2,2,3),plot(t1,y1,t1,y1,'r.')

axis([0,pi,-1,1]),title('子图(3)')

subplot(2,2,4),plot(t2,y2)

axis([0,pi,-1,1]),title('子图(4)')

图6.1-2

可视化的一般步骤

绘制二维图形的一般步骤

绘制三维图形的一般步骤

二维曲线绘图的基本操作

plot的基本调用格式

【例6.2.1-1】简单例题,比较方便的试验指令。

t=(0:

pi/50:

2*pi)';k=0.4:

0.1:

1;Y=cos(t)*k;plot(t,Y)

图6.2-1

【例6.2.1-2】用图形表示连续调制波形

及其包络线。

t=(0:

pi/100:

pi)';%<1>

y1=sin(t)*[1,-1];%<2>

y2=sin(t).*sin(9*t);%<3>

t3=pi*(0:

9)/9;%<4>

y3=sin(t3).*sin(9*t3);plot(t,y1,'r:

',t,y2,'b',t3,y3,'bo')%<5>

axis([0,pi,-1,1])%<6>

图6.2-2

【例6.2.1-3】用复数矩阵形式画Lissajous图形。

(在模拟信号时代,Lissajous图形常用来测量信号的频率。

t=linspace(0,2*pi,80)';%<1>

X=[cos(t),cos(2*t),cos(3*t)]+i*sin(t)*[1,1,1];%(80x3)的复数矩阵

plot(X)%<3>

axissquare%<4>

legend('1','2','3')

图6.2-3

【例6.2.1-4】采用模型

画一组椭圆。

th=[0:

pi/50:

2*pi]';

a=[0.5:

.5:

4.5];

X=cos(th)*a;

Y=sin(th)*sqrt(25-a.^2);

plot(X,Y),axis('equal'),xlabel('x'),ylabel('y')

title('AsetofEllipses')

图6.2-4

 

曲线的色彩、线型和数据点形

色彩和线型

数据点形

【例6.2.2.2-1】用图形演示平面上一个方块四个顶点在仿射投影(AffineProjection)下的位置、形状变化。

%

p1=[-0.5,0,1]';p2=[-0.5,1,1]';p3=[0.5,1,1]';p4=[0.5,0,1]';

Sq=[p1,p2,p3,p4,p1];

%

dx=0.5;dy=1;T=[1,0,dx;0,1,dy;0,0,1];

%

th=pi/6;R=[cos(th),-sin(th),0;sin(th),cos(th),0;0,0,1];

%

alpha=2;beta=3;S=[alpha,0,0;0,beta,0;0,0,1];

E=eye(3,3);%<10>

TRS={E,T,R,S};%<11>

ss={'r^','rd','rp','rh'};%<12>

tt={'OriginalSquare','Translation','Rotation','Scaling'};

%<13>

fori=1:

4

W=TRS{i}*Sq;%

subplot(2,2,i)

fork=1:

4

plot(W(1,k),W(2,k),ss{k});%<19>

axis([-3,3,-1,5]),axisequal

holdon%<21>

end

plot(W(1,:

),W(2,:

))%<23>

gridon%

title(tt{i})%

holdoff%

end

图6.2-5

坐标、刻度和分格线控制

坐标控制

【例6.2.3.1-1】观察各种轴控制指令的影响。

演示采用长轴为3.25,短轴为1.15的椭圆。

注意:

采用多子图表现时,图形形状不仅受“控制指令”影响,而且受整个图面“宽高比”及“子图数目”的影响。

本书这样处理,是出于篇幅考虑。

读者欲想准确体会控制指令的影响,请在全图状态下进行观察。

(图6.2-6)

t=0:

2*pi/99:

2*pi;

x=1.15*cos(t);y=3.25*sin(t);%

subplot(2,3,1),plot(x,y),axisnormal,gridon,

title('NormalandGridon')

subplot(2,3,2),plot(x,y),axisequal,gridon,title('Equal')

subplot(2,3,3),plot(x,y),axissquare,gridon,title('Square')

subplot(2,3,4),plot(x,y),axisimage,boxoff,title('ImageandBoxoff')

subplot(2,3,5),plot(x,y),axisimagefill,boxoff

title('ImageandFill')

subplot(2,3,6),plot(x,y),axistight,boxoff,title('Tight')

图6.2-6

 

刻度、分格线和坐标框

【例6.2.3.2-1】通过绘制二阶系统阶跃响应,综合演示图形标识。

本例比较综合,涉及的指令较广。

请读者耐心读、实际做、再看例后说明,定会有匪浅收益。

(图6.2-7)

clf;t=6*pi*(0:

100)/100;y=1-exp(-0.3*t).*cos(0.7*t);

tt=t(find(abs(y-1)>0.05));ts=max(tt);%<2>

plot(t,y,'r-','LineWidth',3)%<3>

axis([-inf,6*pi,0.6,inf])%<4>

set(gca,'Xtick',[2*pi,4*pi,6*pi],'Ytick',[0.95,1,1.05,max(y)])%<5>

gridon%<6>

title('\ity=1-e^{-\alphat}cos{\omegat}')%<7>

text(13.5,1.2,'\fontsize{12}{\alpha}=0.3')%<8>

text(13.5,1.1,'\fontsize{12}{\omega}=0.7')%<9>

holdon;plot(ts,0.95,'bo','MarkerSize',10);holdoff%<10>

cell_string{1}='\fontsize{12}\uparrow';%<11>

cell_string{2}='\fontsize{16}\fontname{隶书}镇定时间';%<12>

cell_string{3}='\fontsize{6}';%<13>

cell_string{4}=['\fontsize{14}\rmt_{s}='num2str(ts)];%<14>

text(ts,0.85,cell_string)%<15>

xlabel('\fontsize{14}\bft\rightarrow')%<16>

ylabel('\fontsize{14}\bfy\rightarrow')%<17>

图6.2-7

图形标识

简捷指令形式

精细指令形式

【例6.2.4.2-1】本例非常简单,专供试验标识用。

clf;t=0:

pi/50:

2*pi;y=sin(t);plot(t,y);axis([0,2*pi,-1.2,1.2])

text(pi/2,1,'\fontsize{16}\leftarrow\itsin(t)\fontname{隶书}极大值')

图6.2-8

多次叠绘、双纵坐标和多子图

多次叠绘

【例6.2.5.1-1】利用hold绘制离散信号通过零阶保持器后产生的波形。

t=2*pi*(0:

20)/20;y=cos(t).*exp(-0.4*t);

stem(t,y,'g');holdon;stairs(t,y,'r');holdoff

图6.2-7

双纵坐标图

【例6.2.5.2-1】画出函数

和积分

在区间

上的曲线。

clf;dx=0.1;x=0:

dx:

4;y=x.*sin(x);s=cumtrapz(y)*dx;%梯形法求累计积分

plotyy(x,y,x,s),text(0.5,0,'\fontsize{14}\ity=xsinx')

sint='{\fontsize{16}\int_{\fontsize{8}0}^{x}}';

text(2.5,3.5,['\fontsize{14}\its=',sint,'\fontsize{14}\itxsinxdx'])

图6.2-10

【例6.2.5.2-2】受热压力容器的期望温度是120度,期望压力是0.25Mpa。

在同一张图上画出它们的阶跃响应曲线。

S1=tf([11],[1321]);

S2=tf(1,[111]);

[Y1,T1]=step(S1);

[Y2,T2]=step(S2);

plotyy(T1,120*Y1,T2,0.25*Y2,'stairs','plot')

图6.2-11

多子图

【例6.2.5.3-1】演示subplot指令对图形窗的分割。

clf;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])%<5>

plot(t,y12,'b-',t,[y1,-y1],'r:

');axis([0,pi,-1,1])

图6.2-12

交互式图形指令

ginput

gtext

legend

zoom

三维绘图的基本操作

三维线图指令plot3

【例6.3.1-1】简单例题。

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'),view([-82,58]),boxon,legend('链','宝石')

图6.3-1

 

三维网线图和曲面图

三维图形的数据准备

网线图、曲面图基本指令格式

【例6.3.2.2-1】用曲面图表现函数

clf,x=-4:

4;y=x;[X,Y]=meshgrid(x,y);

Z=X.^2+Y.^2;

surf(X,Y,Z);holdon,colormap(hot)

stem3(X,Y,Z,'bo')

图6.3-2

透视、镂空和裁切

图形的透视

【例6.3.3.1-1】透视演示

[X0,Y0,Z0]=sphere(30);

X=2*X0;Y=2*Y0;Z=2*Z0;

surf(X0,Y0,Z0);

shadinginterp

holdon,mesh(X,Y,Z),colormap(hot),holdoff

hiddenoff

axisequal,axisoff

图6.3-3

 

图形的镂空

【例6.3.3.2-1】演示:

如何利用“非数”NaN,对图形进行剪切处理。

t=linspace(0,2*pi,100);r=1-exp(-t/2).*cos(4*t);

[X,Y,Z]=cylinder(r,60);

ii=find(X<0&Y<0);

Z(ii)=NaN;

surf(X,Y,Z);colormap(spring),shadinginterp

light('position',[-3,-1,3],'style','local')

material([0.5,0.4,0.3,10,0.3])

图6.3-4

【例6.3.3.2-2】演示:

如何利用“非数”NaN,对图形进行镂空处理。

P=peaks(30);P(18:

20,9:

15)=NaN;

surfc(P);colormap(summer)

light('position',[50,-10,5]),lightingflat

material([0.9,0.9,0.6,15,0.4])

图6.3-5

 

裁切

【例6.3.3.3-1】表现切面

clf,x=[-8:

0.05:

8];y=x;[X,Y]=meshgrid(x,y);ZZ=X.^2-Y.^2;

ii=find(abs(X)>6|abs(Y)>6);

ZZ(ii)=zeros(size(ii));

surf(X,Y,ZZ),shadinginterp;colormap(copper)

light('position',[0,-15,1]);lightingphong

material([0.8,0.8,0.5,10,0.5])

图6.3-6

 

特殊图形和高维可视化

特殊图形指令例示

面域图area

【例6.4.1.1-1】面域图指令area。

该指令的特点是:

在图上绘制多条曲线时,每条曲线(除第一条外)都是把“前”条曲线作基线,再取值绘制而成。

因此,该指令所画的图形,能醒目地反映各因素对最终结果的贡献份额。

注意:

(1)area的第一输入宗量是单调变化的自变量。

第二输入宗量是“各因素”的函数值矩阵,且每个“因素”的数据取列向量形式排放。

第三输入宗量是绘图的基准线值,只能取标量。

当基准值为0(即以x轴为基准线)时,第三输入宗量可以缺省。

(2)本例第<4>条指令书写格式x',Y',强调沿列方向画各条曲线的事实。

clf;x=-2:

2

Y=[3,5,2,4,1;3,4,5,2,1;5,4,3,2,5]

Cum_Sum=cumsum(Y)

area(x',Y',0)%<4>

legend('因素A','因素B','因素C'),gridon,colormap(spring)

x=

-2-1012

Y=

35241

34521

54325

Cum_Sum=

35241

69762

11131087

图6.4-1

 

各种直方图bar,barh,bar3,bar3h

【例6.4.1.2-1】二维直方图有两种图型:

垂直直方图和水平直方图。

而每种图型又有两种表现模式:

累计式:

分组式。

本例选其两种加以表现。

x=-2:

2;

Y=[3,5,2,4,1;3,4,5,2,1;5,4,3,2,5];

subplot(1,2,1),bar(x',Y','stacked')

xlabel('x'),ylabel('\Sigmay'),colormap(cool)

legend('因素A','因素B','因素C')

subplot(1,2,2),barh(x',Y','grouped')

xlabel('y'),ylabel('x')

图6.4-2

【例6.4.1.2-2】用三维直方图表现上例数据。

clf;x=-2:

2;

Y=[3,5,2,4,1;3,4,5,2,1;5,4,3,2,5];

subplot(1,2,1),bar3(x',Y',1)

xlabel('因素ABC'),ylabel('x'),zlabel('y')

colormap(summer)

subplot(1,2,2),bar3h(x',Y','grouped')

ylabel('y'),zlabel('x')

图6.4-3

饼图pie,pie3

【例6.4.1.3-1】饼图指令pie,pie3用来表示各元素占总和的百分数。

该指令第二输入宗量为与第一宗量同长的0-1向量,1使对应扇块突出。

a=[1,1.6,1.2,0.8,2.1];

subplot(1,2,1),pie(a,[10100]),legend({'1','2','3','4','5'})

subplot(1,2,2),pie3(a,a==min(a)),colormap(cool)

图6.4-4

填色图fill,fill3

【例6.4.1.4-1】读者试验本例时,注意三点:

MATLAB画任意多边形的一种方法;保证绘图数据首尾重合,使勾画多边形封闭;使用图柄对图形的属性进行精细设置。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1