文档库

最新最全的文档下载
当前位置:文档库 > ch5_例题

ch5_例题

离散数据和离散函数的可视化 ● 离散数据可视化依据: 二元实数标量对),

(y x ?平面上的一个点;

二元实数“向量对”),(y x ?平面上的一组点。

● 离散函数可视化的步骤:

根据离散函数特征选定一组自变量T

N

x x x ],,,[21Λ=x ; 根据所给离散函数

)(n n x f y =算得相应的

T

N y y y ],,,[21Λ=y ;

在平面上几何地表现这组向量对),(y x 。

多子图

subplot(m,n,k) 使)(n m ?幅子图中的第k 幅成为当前图

subplot('position',[left bottom width height]) 在指定位置上开辟子图,并成为当前图。

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

图 5.2-8 多子图的布置

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

n

y

。本例演示:自变量的适当

选取;图形的适当比例;再次表现数组运算的简便有效;可视化只能表现有限区间。(图5.1-1)

n=(-10:10)';%产生一组自变量数据

y=abs(n); %函数的数组算法计算相应点的函数值

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

axis equal

grid on %画坐标方格

xlabel('n')

ch5_例题

ch5_例题

图 5.1-1 离散函数的可视化

〖说明〗

●区间的选择:自变量关于0对称,是为表现函数对称性;自变量取

y 的本质。

–20:0,就没有反映n

●视感措施:用axis equal,使“离散点序列”与横纵坐标等夹角。

●函数完整地表现“自变量与应变量之间的关系”,可视化图形所表

现的函数关系通常是局部的、非完整的。

连续函数的可视化

连续函数可视化包含三个重要环节:一,从连续函数获得一组采样数据,即选定一组自变量采样点(包括采样的起点、终点和采样步长),并计算相应的函数值;二,离散数据的可视化;三,图形上离散点的连续化。

显然,图形上的离散点不能很好地表现函数连续性。为了进一步表示离散点之间的函数性状,有两种处理方法:

(1)对区间进行更细的分割,计算更多的点,去近似表现函数的连续变化。优点:所画各点都反映真实的函数关系。缺点:为产生“连续感”,所需离散点的数量很大。实际中少用。

(2)采用“线性插值”迅速算出离散点间连线上所经过的每个像素,从而获得“连续”曲线的效果。优点:曲线有良好的连续感,计算量小。缺点:除采样点外,所有连线都是真函数的近似。此外,还需提醒:采用“插值连线”画图时,自变量采样点必须按

单调增或单调减次序排列。

MATLAB 绘制连续曲线时,会根据用户指定的离散采样点,自动地进行插值计算,进而绘制出连续的曲线。

还值得指出:倘若自变量的采样点数不足够多,则无论哪种方法都不能真实地反映原函数。

【例5.1-2】用图形表示连续调制波形)9sin()sin(t t y 。本例演示:增加图形“连续感”的两种方法;MATLAB 具有自动“线性插值”绘制连续曲线的能力;采样点数不够多会造成对所表现函数的误解。(图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)点足够的连续图形')

ch5_例题

图 5.1-2 连续函数的图形表现方法

〖说明〗

●图(1)12个采样点太少,看不出函数的性质。图形(3)采样点

401个,仍显稀疏。

●从子图(2)观察到两个事实:采样点12个太少,不足以反映函

数;采样点之间连线的“线性插值”实质。

●子图(4),采样点数仅有51个,各采样点间由直线连接。视觉上

已感觉所画“折线”大致光滑地近似表现真实曲线。

【例5.1-3】绘制奇数正多边形及圆。本例演示:自变量单调排列对正确绘制连续曲线的重要性;如何画正多边形。(图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) 正常排序图形'),axis equal off,shg

subplot(1,2,2),plot(xx,yy)

title('(2) 非正常排序图形'),axis equal off,shg

ch5_例题

图 5.1-3 自变量排列次序对连续曲线图形的影响

〖说明〗

●绘制连续曲线时,自变量必须按照递增或递减的次序排列,否则所

的曲线将发生异常。

ch5_例题

ch5_例题

【例5.2-1】二维曲线绘图指令演示之一。本例演示: plot(t,Y) plot(Y)所绘曲线的区别;“线宽”属性的设置。(图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('By plot(t,Y)'),xlabel('t')

subplot(1,2,2),plot(Y ,'LineWidth',1.5)

title('By plot(Y)'),xlabel('row subscript of Y')

图 5.2-1 plot(t,Y)与plot(Y)所绘曲线的区别

【例5.2-2】用图形表示连续调制波形)9sin()sin(t t y 及其包络线。(图5.2-2)

t=(0:pi/100:pi)';%时间采样列向量 <1>

y1=sin(t)*[1,-1];%包络线,(101x2)的矩阵 <2> y2=sin(t).*sin(9*t);%长度为101的调制波列向量 t3=pi*(0:9)/9; %在[0,pi]的零点 y3=sin(t3).*sin(9*t3);

plot(t,y1,'r:',t,y2,'-bo')

hold on

plot(t3,y3,'s','MarkerSize',10,'MarkerEdgeColor',[0 ,1,0],'MarkerFaceColor',[1,0.8,0])

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

hold off

%以下指令供读者比较用。使用时,指令前的 % 号要去除。

%属性影响该指令中的所有线对象中的离散点。

%plot(t,y1,'r:',t,y2,'-

bo',t3,y3,'s','MarkerSize',10,'MarkerEdgeColor',[0, 1,0],'MarkerFaceColor',[1,0.8,0])

图5.2-2 属性控制下所绘曲线

t=0:pi/100:pi;%时间采样行向量<1>

y1=([1;-1]*sin(t))';%包络线,(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')

hold on

plot(t3,y3,'s','MarkerSize',10,'MarkerEdgeColor',[0 ,1,0],'MarkerFaceColor',[1,0.8,0])

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

hold off

〖说明〗

由于曲线的过零点要进行较多的属性设置,为不与前面所画线对象冲突,所以用另一条plot指令执行。

ch5_例题

ch5_例题

【例5.2-3】

标识指令中字符的精细控制

ch5_例题

ch5_例题

ch5_例题

ch5_例题

ch5_例题

ch5_例题

ch5_例题

【例5.2-4】

【例5.2-4】本例非常简单,专供试验标识用(图5.2-4)。读者在指令窗中反复调用这两条指令就可以检查自己对指令、标识的理解是否正确。当然每次试验时,第<5>条指令中的字符串应按读者的需要改变。

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>

title('y=sin(t)')

xlabel('t')

ylabel('y')

图 5.2-4 试验标识的图形

【例5.2-5】通过绘制二阶系统阶跃响应,综合演示图形标识。本例比较综合,涉及的指令较广。请读者耐心读、实际做、再看例后说明,定会有匪浅收益。(图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)

hold on

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

plot(ts,0.95,'bo','MarkerSize',10) %镇定点位置

hold off

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)'}) grid on

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','HorizontalAli gnment','Center')

title('\fontsize{14}\it y = 1 - e^{ -\alpha t}cos{\omegat}')

xlabel('\fontsize{14} \bft \rightarrow')

ylabel('\fontsize{14} \bfy \right arrow')

ch5_例题

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

多次叠绘

hold on使当前轴及图形保持而不被刷新,准备接受此后将绘制的新曲线。

hold off使当前轴及图形不再具备不被刷新的性质。

hold当前图形是否具备刷新性质的双向切换开关。

【例5.2-6】利用hold绘制离散信号通过零阶保持器后产生的波形。(图5.2-6)

t=2*pi*(0:20)/20;

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

stem(t,y,'g','Color','k');

hold on

stairs(t,y,':r','LineWidth',3)

hold off

legend('\fontsize{14}\it stem','\fontsize{14}\it stairs')

box on

ch5_例题

图5.2-6 离散信号的重构

双纵坐标图

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】画出函数x x y sin =和积分?=x

dx x x s 0)sin (在区间]4,0[上的曲线(图5.2-7)。

clf;dx=0.1;x=0:dx:4;y=x.*sin(x); s=cumtrapz(y)*dx; %<2> a=plotyy(x,y,x,s,'stem','plot'); %<3>

text(0.5,1.5,'\fontsize{14}\ity=xsinx') %<4>

sint='{\fontsize{16}\int_{\fontsize{8}0}^{ x}}'; %<5>

ss=['\fontsize{14}\its=',sint,'\fontsize{14}\itxsin xdx']; %<6>

text(2.5,3.5,ss) %<7> set(get(a(1),'Ylabel'),'String','被积函数 \ity=xsinx') %<8>

set(get(a(2),'Ylabel'),'String',ss) %<9>

xlabel('x')

ch5_例题

图 5.2-7 函数和积分

获取二维图形数据的指令ginput

[x,y]=ginput(n) 用鼠标从二维图形上获取n 个点的数据坐标 (x,y) 。

例5.2-9】采用图解法求

2)2(=+x

x 的解。 (1)绘制y=(x+2).^x-2曲线

clf

x=-1:0.01:5; y=(x+2).^x-2; plot(x,y) grid on zoom on

-1

1

2

3

4

5

-2000

020004000600080001000012000140001600018000

(2)在曲线与坐标横轴的交点附近局部放大图上求解

[x,y]=ginput(1);

(3)显示图解结果 format long x,y

x =

0.69828692903537 y =

-5.884401711382421e-010

ch5_例题

图5.2-9 局部放大图

三维曲线和曲面

三维线图指令plot3

plot3(X,Y,Z,'s') 用s 指定的点形线型色彩绘制曲线

plot3(X1,Y1,Z1,'s1',X2,Y2,Z2,'s2', ... ) 用s1, s2 指定的点形线型色彩绘制多类曲线

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

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

legend('链','宝石')

图 5.3-1 宝石项链

【例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]),box on %视角控制,打开坐标框

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

legend('链','宝石')

ch5_例题