MATLAB数据和函数的可视化精品版.docx
- 文档编号:29060502
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:54
- 大小:1.10MB
MATLAB数据和函数的可视化精品版.docx
《MATLAB数据和函数的可视化精品版.docx》由会员分享,可在线阅读,更多相关《MATLAB数据和函数的可视化精品版.docx(54页珍藏版)》请在冰豆网上搜索。
MATLAB数据和函数的可视化精品版
第五部分数据和函数的可视化
视觉是人们感受世界、认识自然的最重要依靠。
数据可视化的目的在于:
通过图形,从一堆杂乱的离散数据中观察数据间的内在关系,感受由图形所传递的内在本质。
MATLAB一向注重数据的图形表示,并不断地采用新技术改进和完备其可视化功能。
这部分系统地阐述:
离散数据表示成图形的基本机理;曲线、曲面绘制的基本技法和指令;特殊图形的生成和使用示例;如何使用线型、色彩、数据点标记凸现不同数据的特征;如何利用着色、灯光照明、反射效果、材质体现和透明度处理渲染、烘托表现高维函数的性状;如何生成和运用标识,画龙点睛般地注释图形;如何显示和转换unit8、unit16、double三种不同数据类型所体现的变址、灰度和真彩图象,如何读写各种标准图象格式文件;如何通过图形窗的交互操作对图形进行修饰、调整;如何打印和输出图形文件。
本章的图形指令只涉及MATLAB的“高层”绘图指令。
这种指令的形态和格式友善,易于理解和使用。
整章内容遵循由浅入深、由基本到高级、由算例带归纳的原则。
所有算例都是运行实例,易于用户实践试验,并从中掌握一般规律。
MATLAB从5.x向6.x版本升级后,旧版中的本章全部内容几乎可以不加修改地用于6.x版。
此外,本章新版为适应升级增加了或改变了如下内容:
●MATLAB从6.0版起,图形对象“面”、“块”、“象”具备了透明属性,进一步增强了计算结果可视化的感染力。
为此,本章专设第5.5.4节,详细阐述透明度处理的机理和指令协调细节。
●在MATLAB升级过程中,专门用于图像数据存储的unit8,unit16数据类型进一步完善。
对此,本章专辟第5.6.3节说明这种数据类型的特点和使用注意事项。
●本章还对升级后的图形窗界面的编辑功能进行了新的全面阐述(见第5.7节)。
5.1引导
5.1.1离散数据和离散函数的可视化
【例5.1.1-1】用图形表示离散函数
。
n=0:
12;%产生一组自变量数据
y=1./abs(n-6);%计算相应点的函数值
plot(n,y,'r*','MarkerSize',20)%用红花标出数据点
gridon%画坐标方格
Warning:
Dividebyzero.
图5.1-1
注意:
图形上的离散序列所反映的只是某确定的有限区间内的函数关系。
应记住:
图形不能表现无限区间上的函数关系!
当根据此图对区间外函数情况进行推测时,要谨慎从事。
5.1.2连续函数的可视化
与离散函数可视化一样,进行连续函数可视化也必须先在一组离散自变量上计算相应的函数值,并把这一组“数据对”用点图示。
但这些离散的点不能表现函数的连续性。
为了进一步表示离散点之间的函数情况,有两种处理方法:
(1)、对区间进行更细的分割,计算更多的点,去近似表现函数的连续性;
(2)把两点用直线连接,近似表现两点间的(一般是非线性的)函数性状。
【例5.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)')
图5.1-2连续函数的图形表现方法
5.1.3可视化的一般步骤
5.1.3.1绘制二维图形的一般步骤
步骤
典型指令
1
数据准备:
选定所要表现的范围
产生自变量采样向量
计算相应的函数值向量
t=pi*(0:
100)/100;
y=sin(t).*sin(9*t);
2
选定图形窗及子图位置:
缺省时,打开FigureNo.1,或当前窗,当前子图
可用指令指定图形窗号和子图号
figure
(1)%指定1号图形窗
subplot(2,2,3)%指定3号子图
3
调用(高层)绘图指令:
线型、色彩、数据点形
plot(t,y,’b-’)%用兰色实现画曲线
4
设置轴的范围与刻度、坐标分格线
axis([0,pi,-1,1])%设置轴的范围
gridon%画坐标分格线
5
图形注释:
图名、坐标名、图例、文字说明
title(‘调制波形’)%图名
xlabel(‘t’);ylabel(‘y’)%轴名
legend(‘sin(t)’,’sin(t)sin(9t)’)%图例
text(2,0.5,’y=sin(t)sin(9t)’)%文字说明
6
*图形的精细修饰(图柄操作);
利用对象属性值设置
利用图象窗工具条进行
set(h,’MarkerSize’,10)%设置数据点大小
7
*打印
图形窗上的直接打印选项或按键
利用图形后处理软件打印
5.1.3.2绘制三维图形的一般步骤
步骤
典型指令
1
(1a)三维曲线数据准备:
先取一个参变量采样向量
然后计算各坐标数据向量向量
t=pi*(0:
100)/100;
x=fi(t;y=f2(t));z=f3(t);
(1b)三维曲面数据
产生自变量采样值
由自变量向量产生自变量“格点”矩阵
计算自变量“格点”矩阵相应的函数值矩阵
x=x1:
dx:
x2;
y=yi:
dy:
y2;
[X,Y]=meshgrid(x,y);
Z=f(x,y);
2
选定图形窗及子图位置:
figure
(1)%指定1号图形窗
subplot(2,2,3)%指定3号子图
3
(3a)调用三维曲线绘图指令:
线型、色彩、数据点形
plot3(x,y,z,’b-’)
(3b)调用三维曲面绘图指令:
mesh(X,Y,Z)
4
设置轴的范围与刻度、坐标分格线
axis([x1,x2,y1,y2,z1,z2])
gridon
5
图形注释:
图名、坐标名、图例、文字说明
title(‘调制波形’)
xlabel(‘t’);ylabel(‘y’)
legend(‘sin(t)’,’sin(t)sin(9t)’)
text(2,0.5,’y=sin(t)sin(9t)’)
6
着色、明暗、灯光、材质处理
colormap,shading,light,material
7
视点、三度(横、纵、高)比
view,aspect
8
*图形的精细修饰(图柄操作);
利用对象属性值设置
利用图象窗工具条进行
get,set
9
*打印
图形窗上的直接打印选项或按键
利用图形后处理软件打印
5.2二维曲线绘图的基本操作
5.2.1plot的基本调用格式
【例5.2.1-1】简单例题,比较方便的试验指令。
t=(0:
pi/50:
2*pi)';k=0.4:
0.1:
1;Y=cos(t)*k;plot(t,Y)
图5.2-1
【例5.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>
图5.2-2
【例5.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')
图5.2-3
【例5.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')
图5.2-4
5.2.2曲线的色彩、线型和数据点形
5.2.2.1色彩和线型
5.2.2.2数据点形
【例5.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
图5.2-5
5.2.3坐标、刻度和分格线控制
5.2.3.1坐标控制
【例5.2.3.1-1】观察各种轴控制指令的影响。
演示采用长轴为3.25,短轴为1.15的椭圆。
注意:
采用多子图表现时,图形形状不仅受“控制指令”影响,而且受整个图面“宽高比”及“子图数目”的影响。
本书这样处理,是出于篇幅考虑。
读者欲想准确体会控制指令的影响,请在全图状态下进行观察。
(图5.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')
图5.2-6
5.2.3.2刻度、分格线和坐标框
【例5.2.3.2-1】通过绘制二阶系统阶跃响应,综合演示图形标识。
本例比较综合,涉及的指令较广。
请读者耐心读、实际做、再看例后说明,定会有匪浅收益。
(图5.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>
图5.2-7
5.2.4图形标识
5.2.4.1简捷指令形式
5.2.4.2精细指令形式
【例5.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{隶书}极大值')
图5.2-8
5.2.5多次叠绘、双纵坐标和多子图
5.2.5.1多次叠绘
【例5.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
图5.2-7
5.2.5.2双纵坐标图
【例5.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'])
图5.2-10
【例5.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')
图5.2-11
5.2.5.3多子图
【例5.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])
图5.2-12
5.2.6交互式图形指令
5.2.6.1ginput5.2.6.2gtext5.2.6.3legend
5.2.6.4zoom
5.3三维绘图的基本操作
5.3.1三维线图指令plot3
【例5.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('链','宝石')
图5.3-1
5.3.2三维网线图和曲面图
5.3.2.1三维图形的数据准备
5.3.2.2网线图、曲面图基本指令格式
【例5.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')
图5.3-2
5.3.3透视、镂空和裁切
5.3.3.1图形的透视
【例5.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
图5.3-3
5.3.3.2图形的镂空
【例5.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])
图5.3-4
【例5.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])
图5.3-5
5.3.3.3裁切
【例5.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])
图5.3-6
5.4特殊图形和高维可视化
5.4.1特殊图形指令例示
5.4.1.1面域图area
【例5.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
图5.4-1
5.4.1.2各种直方图bar,barh,bar3,bar3h
【例5.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')
图5.4-2
【例5.4.1.2-2】用三维直方图表现上例数据。
clf;x=-2:
2;
Y=[
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 数据 函数 可视化 精品