数据和函数的可视化.docx
《数据和函数的可视化.docx》由会员分享,可在线阅读,更多相关《数据和函数的可视化.docx(27页珍藏版)》请在冰豆网上搜索。
数据和函数的可视化
第5章
数据和函数的可视化
.1引导
.1.1离散数据和离散函数的可视化
【例5.1-1】图形表示离散函数
。
n=(-10:
10)';%产生一组自变量数据
y=abs(n);%函数的数组算法计算相应点的函数值
plot(n,y,'r.','MarkerSize',20)
axisequal
gridon%画坐标方格
xlabel('n')
图5.1-1离散函数的可视化
.1.2连续函数的可视化
【例5.1-2】用图形表示连续调制波形
。
t1=(0:
11)/11*pi;%12个采样点偏少
t2=(0:
400)/400*pi;%401个采样点密集
t3=(0:
50)/50*pi;%51个采样点已够
y1=sin(t1).*sin(9*t1);%数组运算
y2=sin(t2).*sin(9*t2);
y3=sin(t3).*sin(9*t3);
subplot(2,2,1),plot(t1,y1,'r.')
axis([0,pi,-1,1]),title('
(1)点过少的离散图形')
subplot(2,2,2),plot(t1,y1,t1,y1,'r.')
axis([0,pi,-1,1]),title('
(2)点过少的连续图形')
subplot(2,2,3),plot(t2,y2,'r.')
axis([0,pi,-1,1]),title('(3)点密集的离散图形')
subplot(2,2,4),plot(t3,y3)
axis([0,pi,-1,1]),title('(4)点足够的连续图形')
图5.1-2连续函数的图形表现方法
【例5.1-3】绘制奇数正多边形及圆。
N=9;%多边形的边数
t=0:
2*pi/N:
2*pi;%递增排列自变量
x=sin(t);y=cos(t);%参数方程
tt=reshape(t,2,(N+1)/2);%把列向量重排成“二维数组”
tt=flipud(tt);%“二维数组”的上下行调换
tt=tt(:
);%变序排列自变量
xx=sin(tt);yy=cos(tt);
subplot(1,2,1),plot(x,y)
title('
(1)正常排序图形'),axisequaloff,shg
subplot(1,2,2),plot(xx,yy)
title('
(2)非正常排序图形'),axisequaloff,shg
.2二维曲线和图形
表5.2-1MATLAB提供的二维图形绘制指令
指令名
含义和功能
指令名
含义和功能
arer
面域图;主用于表现比例、成份
plot
基本二维曲线图形指令
bar
直方图;主用于统计数据
quiver
二维箭头图;主用于场强、流向
compass
射线图;主用于方向和速度
rose
频数扇形图;主用于统计
feather
羽毛图;主用于速度
stairs
阶梯图;主用于采样数据
hist
频数直方图;主用于统计
stem
二维杆图;主用于离散数据
pie
二维饼图;统计数据极坐标形式
.2.1二维曲线绘制的基本指令plot
10一基本调用格式plot(x,y,'s')
这是plot指令的最典型、最基本的调用格式。
该指令的输入量(x,y,'s')称谓平面绘线三元组。
它们分别指定平面曲线的几何位置、点形线型和色彩。
●x,y是长度相同的一维数组。
x,y分别指定采样点的横坐标和纵坐标。
●第三个输入量's'是字符串,用来指定“离散点形”、“连续线型”、“点线色彩”。
●没第三个输入量,plot将使用缺省设置——“蓝色细实线”。
表5.2-1离散数据点形允许设置值
符号
含义
符号
含义
符号
含义
d
菱形符diamond
x
叉字符
^
朝上三角符
h
六角星符hexagram
<
朝左三角符
o
空心圆圈
.
实心黑点
>
朝右三角符
p
五角星符pentagram
+
十字符
v
朝下三角符
s
方块符square
*
米字符
表5.2-2连续线型允许设置值
符号
含义
符号
含义
-
细实线
-.
点划线
:
虚点线
--
虚划线
表5.2-3点线色彩允许设置值
符号
b
g
r
c
m
y
k
w
含义
蓝
绿
红
青
品红
黄
黑
白
10二plot的衍生调用格式
(1)单色或默认多色绘制多条曲线
plot(X,Y,'s')用s指定的点形线型色彩绘制多条曲线
plot(X,Y)采用默认的色彩次序用细实线绘制多条曲线
〖说明〗
●当X,Y均为
数组时,将绘制出
条曲线。
每条曲线的几何位置由X,Y对应的列确定。
(2)多三元组绘制多条曲线
plot(X1,Y1,'s1',X2,Y2,'s2',...,Xn,Yn,'sn')
〖说明〗
●该指令输入量由多个“三元组”(Xn,Yn,'sn')组成。
●每个三元组是独立的,它的工作方式与plot(X,Y,'s')完全相同。
(3)单输入量绘线
plot(Y)
〖说明〗
●当Y是一维数组时,则以该数组的下标为横坐标、Y为纵坐标绘制一条曲线。
●当Y二维数组时,则以该数组的“行下标”为横坐标、Y为纵坐标绘制“列数”条曲线。
10三plot的属性可控调用格式
plot(x,y,'s','PropertyName',PropertyValue,…)
〖说明〗
●运用属性名(PropertyName)和属性值(PropertyValue)可以对“线”对象的属性进行设置,使所绘曲线更具个性化。
●MATLAB出于使用频率和方便考虑,采用's'字符串方式设置点形线型及几种常用色彩。
表5.2-4线对象的常用属性名和属性值
含义
属性名
属性值
说明
点、线色彩
Color
,RGB三元组中每个元素可在
取任意值。
●最常用的色彩可通过表5.2-3中的字母表示。
●常用色彩可通过's'设置。
蓝色为默认色彩。
线型
LineStyle
四种线型见表5.2-2
●可通过's'设置。
细实线为默认线型。
线宽
LineWidth
正实数
●默认线宽为0.5
数据点形
Marker
十四种点形见表5.2-1
●可通过's'设置。
点的大小
MarkerSize
正实数
●默认大小为6.0
点边界色彩
MarkerEdgeColor
,RGB三元组中每个元素可在
取任意值。
点域色彩
MarkerFaceColor
,RGB三元组中每个元素可在
取任意值。
【例5.2-1】二维曲线绘图指令演示之一。
clf
t=(0:
pi/50:
2*pi)';%生成(101*1)的列向量
k=0.4:
0.1:
1;%生成(1*7)的行向量
Y=cos(t)*k;%Y是向量?
矩阵?
(101*7)的矩阵
subplot(1,2,1),plot(t,Y,'LineWidth',1.5)
title('Byplot(t,Y)'),xlabel('t')
subplot(1,2,2),plot(Y,'LineWidth',1.5)
title('Byplot(Y)'),xlabel('rowsubscriptofY')
图5.2-1plot(t,Y)与plot(Y)所绘曲线的区别
〖说明〗
【例5.2-2】用图形表示连续调制波形
及其包络线。
t=(0:
pi/100:
pi)';%时间采样列向量<1>
y1=sin(t)*[1,-1];%包络线,(101x2)的矩阵<2>
y2=sin(t).*sin(9*t);
t3=pi*(0:
9)/9;
y3=sin(t3).*sin(9*t3);
plot(t,y1,'r:
',t,y2,'-bo')
holdon
plot(t3,y3,'s','MarkerSize',10,'MarkerEdgeColor',[0,1,0],'MarkerFaceColor',[1,0.8,0])
axis([0,pi,-1,1])
holdoff
%以下指令供读者比较用。
使用时,指令前的%号要去除。
%属性影响该指令中的所有线对象中的离散点。
%plot(t,y1,'r:
',t,y2,'-bo',t3,y3,'s','MarkerSize',10,'MarkerEdgeColor',[0,1,0],'MarkerFaceColor',[1,0.8,0])
.2.2坐标控制和图形标识
10一坐标轴的控制
表5.2-5常用的坐标控制指令
坐标轴控制方式、取向和范围
坐标轴的高宽比
指令
含义
指令
含义
axisauto
使用缺省设置
axisequal
纵、横轴采用等长刻度
axismanual
使当前坐标范围不变
axisfill
在manual方式下起作用,使坐标充满整个绘图区。
axisoff
取消轴背景
axisimage
纵、横轴采用等长刻度,且坐标框紧贴数据范围。
axison
使用轴背景
axisnormal
缺省矩形坐标系
axisij
矩阵式坐标,原点在左上方。
axissquare
产生正方形坐标系
axisxy
普通直角坐标,原点在坐下方。
axistight
把数据范围直接设为坐标范围
axis(V)
V=[x1,x2,y1,y2];
V=[x1,x2,y1,y2,z1,z2];
人工设定坐标范围。
设定值:
二维,4个;三维,6个。
axisvis3d
保持高宽比不变,用于三维旋转时避免图形大小变化。
〖说明〗坐标范围设定向量V中的元素必须服从:
x1V的元素允许取inf或-inf,那意味着上限或下限是自动产生的,即坐标范围“半自动”确定。
10二分格线和坐标框
grid是否画分格线的双向切换指令(使当前分格线状态翻转)
gridon画出分格线
gridoff不画分格线
box坐标形式在封闭式和开启式之间切换指令
boxon使当前坐标呈封闭形式
boxoff使当前坐标呈开启形式
10三图形标识指令
title(S)书写图名
xlabel(S)横坐标轴名
ylabel(S)纵坐标轴名
legend(S1,S2,...)绘制曲线所用线型、色彩或数据点形图例
text(xt,yt,S)在图面(xt,yt)坐标处书写字符注释
〖说明〗
●legend所画图例的缺省位置在图形窗的右上角。
假如要通过指令改变图例的位置,那末可以通过相应的属性进行控制。
例如legend(S1,S2,'Location','SouthEast')将把图例设置在图形窗的右下角。
10四标识指令中字符的精细控制
【例5.2-5】通过绘制二阶系统阶跃响应,综合演示图形标识。
clf;t=6*pi*(0:
100)/100;
y=1-exp(-0.3*t).*cos(0.7*t);
plot(t,y,'r-','LineWidth',3)
holdon
tt=t(find(abs(y-1)>0.05));ts=max(tt);
plot(ts,0.95,'bo','MarkerSize',10)
holdoff
axis([-inf,6*pi,0.6,inf])
set(gca,'Xtick',[2*pi,4*pi,6*pi],'Ytick',[0.95,1,1.05,max(y)])
set(gca,'XtickLabel',{'2*pi';'4*pi';'6*pi'})
set(gca,'YtickLabel',{'0.95';'1';'1.05';'max(y)'})
gridon
text(13.5,1.2,'\fontsize{12}{\alpha}=0.3')
text(13.5,1.1,'\fontsize{12}{\omega}=0.7')
cell_string{1}='\fontsize{12}\uparrow';
cell_string{2}='\fontsize{16}\fontname{隶书}镇定时间';
cell_string{3}='\fontsize{6}';
cell_string{4}=['\fontsize{14}\rmt_{s}='num2str(ts)];
text(ts,0.85,cell_string,'Color','b','HorizontalAlignment','Center')
title('\fontsize{14}\ity=1-e^{-\alphat}cos{\omegat}')
xlabel('\fontsize{14}\bft\rightarrow')
ylabel('\fontsize{14}\bfy\rightarrow')
.2.3多次叠绘、双纵坐标和多子图
10一多次叠绘
holdon使当前轴及图形保持而不被刷新,接受此后绘制的新曲线。
holdoff使当前轴及图形不再具备不被刷新的性质。
hold当前图形是否具备刷新性质的双向切换开关。
【例5.2-6】利用hold绘制离散信号通过零阶保持器后产生的波形。
t=2*pi*(0:
20)/20;
y=cos(t).*exp(-0.4*t);
stem(t,y,'g','Color','k');
holdon
stairs(t,y,':
r','LineWidth',3)
holdoff
legend('\fontsize{14}\itstem','\fontsize{14}\itstairs')
boxon
10二双纵坐标图
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指定的不同形式的两条曲线。
【例5.2-7】画出函数
和积分
在区间
上的曲线。
clf;dx=0.1;x=0:
dx:
4;y=x.*sin(x);
s=cumtrapz(y)*dx;
a=plotyy(x,y,x,s,'stem','plot');
text(0.5,1.5,'\fontsize{14}\ity=xsinx')
sint='{\fontsize{16}\int_{\fontsize{8}0}^{x}}';
ss=['\fontsize{14}\its=',sint,'\fontsize{14}\itxsinxdx'];
text(2.5,3.5,ss)
set(get(a
(1),'Ylabel'),'String','被积函数\ity=xsinx')
set(get(a
(2),'Ylabel'),'String',ss)
xlabel('x')
10三多子图
subplot(m,n,k)使
幅子图中的第
幅成为当前图
subplot('position',[leftbottomwidthheight])
在指定位置上开辟子图,并成为当前图。
【例5.2-8】演示subplot指令对图形窗的分割(图5.2-8)。
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.1,0.6,0.40])
plot(t,y12,'b-',t,[y1,-y1],'r:
')
axis([0,pi,-1,1])
.2.4获取二维图形数据的指令ginput
[x,y]=ginput(n)用鼠标从二维图形上获取n个点的数据坐标(x,y)。
.3三维曲线和曲面
.3.1三维线图指令plot3
plot3(X,Y,Z,'s')用s指定的点形线型色彩绘制曲线
plot3(X1,Y1,Z1,'s1',X2,Y2,Z2,'s2',...)
用s1,s2指定的点形线型色彩绘制多类曲线
〖说明〗
●plot3的使用方法与plot相似。
【例5.3-1】三维曲线绘图。
本例演示:
三维曲线的参数方程;线型、点形和图例。
(图5.3-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
xlabel('x'),ylabel('y'),zlabel('z')
legend('链','宝石')
图5.3-1宝石项链
.3.2三维曲面/网线图
10一三维曲面/网线可视化的数据准备
画函数
所代表的三维空间曲面,需要做以下数据准备:
(1)确定自变量
的取值范围和取值间隔。
x=x1:
dx:
x2;y=y1:
dy:
y2;
(2)构成xy平面上的自变量“格点”矩阵。
[X,Y]=meshgrid(x,y);
(3)计算在自变量采样“格点”上的函数值,即Z=f(X,Y)。
10二绘制曲面/网线图的基本指令
surf(Z)以Z矩阵列、行下标为
轴自变量,画曲面图。
surf(X,Y,Z)最常用的曲面图调用格式
surf(X,Y,Z,C)最完整调用格式,画由C指定用色的曲面图。
mesh(Z)以Z矩阵列、行下标为
轴自变量,画网线图。
mesh(X,Y,Z)最常用的网线图调用格式
mesh(X,Y,Z,C)最完整调用格式,画由C指定用色的网线图。
【例5.3-2】用曲面图表现函数
。
clf
x=-4:
4;y=x;%确定自变量的取值范围和采样间隔
[X,Y]=meshgrid(x,y);%x-y平面上的自变量“格点”矩阵
Z=X.^2+Y.^2;%计算格点上的函数值
surf(X,Y,Z);%绘制曲面图
colormap(hot)%采用hot色图
holdon
stem3(X,Y,Z,'bo')%用来表现x-y平面格点,及对应的函数值
holdoff
xlabel('x'),ylabel('y'),zlabel('z')
axis([-5,5,-5,5,0,inf])%设置坐标范围
view([-84,21])%控制视角
.3.3曲面/网线图的精细修饰
10一视角控制view
view([az,el])通过方位角、俯视角设置视点
view([vx,vy,vz])通过直角坐标设置视点
图5.3-3视点设置参数示意
(注意:
有时指令[az0,el0]=view给出的el0数据比真实的俯视角大30度左右。
)
10二色图colormap
colormap(CM)设置当前图形窗的着色色图为CM
10三浓淡处理shading
shadingoptions图形对象着色的浓淡处理
【例5.3-3】三种浓淡处理方式比较。
clf
x=-4:
4;y=x;
[X,Y]=meshgrid(x,y);
Z=X.^2+Y.^2;
surf(X,Y,Z)
colormap(jet)
subplot(1,3,1),surf(Z),axisoff
subplot(1,3,2),surf(Z),axisoff,shadingflat
subplot(1,3,3),surf(Z),axisoff,shadinginterp
set(gcf,'Color','w')%设置图形窗的底色为白
10四透明度控制alpha
alpha(v)对面、块、象三种图形对象的透明度加以控制
【例5.3-4】半透明的表面图。
clf
surf(peaks)
shadinginterp
alpha(0.5)
colormap(summer)
10五灯光设置light
light('color',option1,'style',option2,'position',option3)灯光设置
10六照明模式lighting
lightingoptions设置照明模式
10七控制光反射的材质指令material
materialoptions使用预定义反射模式
【例5.3-5】灯光、照明、材质指令所表现的图形。
(图5.3-6)
clf;
[X,Y,Z]=sphere(40);
colormap(jet)
subplot(1,2,1),surf(X,Y,Z),axisoff,shadinginterp
light('position',[0-101.5],'style','infinite')
lightingphong
materialshiny
subplot(1,2,2),surf(X,Y,Z,-Z)
axisoff,shadingflat;light;lightingflat
light('position',[-1,-1,-2],'color','y')
light('position',[-1,0.5,1],'style','local','color','w')
set(gcf,'Color','w')%设置图形窗的底色为白
.3.4透视、镂空和裁切
10一图形的透视
hiddenoff透视被叠压的图形
hiddenon消隐被叠压的图形
【例5.3-6】透视演示(图5.3-7)。
[X0,Y0,Z0]=sphere(30);%产生单位球面的三维坐标
X=2*X0;Y=2*Y0;Z=2*Z0;%产生半径为2的球面的三维坐标
surf(X0,Y0,Z0);
shadinginterp
holdon,mesh(X,Y,Z),colormap(hot)
holdoff
%alpha(0),%观察不同
hiddenoff%产生透视效果
axisequal,