优秀生matlab培训lecture78图形绘制基础_第1页
优秀生matlab培训lecture78图形绘制基础_第2页
优秀生matlab培训lecture78图形绘制基础_第3页
优秀生matlab培训lecture78图形绘制基础_第4页
优秀生matlab培训lecture78图形绘制基础_第5页
已阅读5页,还剩79页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章

图形绘制基础本章主要内容

4.1二维图形的绘制(包括:二维曲线的绘制、特殊二维图形的绘制)

4.2三维图形的绘制(包括:三维曲线、三维曲面、特殊三维图形、色彩处理、视点和光照)4.1

二维图形的绘制

包括:二维曲线的绘制、特殊二维图形的绘制

绘制二维曲线的基本方法:

在曲线上顺序取若干点,将这些点用折线段连起来。当这些点足够密时,则折线段看上去就是光滑的曲线。

用N表示所取的点数,将这N个点的x坐标、y坐标分别存入向量x,y中,使得(x(i),y(i))是曲线上第i个点的坐标(i=1,2,…,N),则用命令plot(x,y)就可以把这N个点连起来,因而把这条曲线画出来。4.1.1

绘制二维曲线的基本函数—plot

1.基本格式:plot(x,y)其中,x和y是长度相同的向量,分别是由数据点的x坐标和y坐标值构成的向量

[例1]:绘制y=sin(x)在[0,2*pi]范围内的图形。

x=0:0.1:2*pi;

y=sin(x);

plot(x,y)

练习:绘制y=2e0.5xsin(2πx)在[0,2*pi]范围内的图形

[例2]:绘制曲线

程序如下:

t=linspace(0,8*pi,101);

x=cos(t)+t.*sin(t);

y=sin(t)-t.*cos(t);

plot(x,y)0

£

t

£

8py

=

sin

t

-

t

cos

t

x

=

cos

t

+

t

sin

t

[例3]玫瑰线在极坐标系下的方程为r

=

R

cosnq

q

˛

[0,2p

]

其中,n为正整数(n=2,3,…)。绘制玫瑰线。

程序如下:

R=5;

n=input('n=?')

theta=linspace(0,2*pi,101);

rho=R*cos(n*theta);

x=rho.*cos(theta);

y=rho.*sin(theta);

plot(x,y)

[练习1]:画出星形线

[练习2]:画出心形线(心形线的极坐标方程为r

=1

+cosq

)t

˛

[0,2p

]3y

=

3sin

tx

=

3cos3

t2.plot函数的其它使用方法

1)输入参数可以是矩阵

格式:plot(X,Y)

功能(1)若X和Y是同样大小的矩阵。设X和Y的列数是n,则绘制n条曲线(以矩阵X和Y的第i列为横、纵坐标,绘制第i条曲线)。

例如:在同一坐标系中绘制三条幅值不同的正弦曲线:x=[0:pi/20:2*pi]';

y=sin(x);

X=[xxx];

Y=[y2*y3*y];plot(X,Y)

(2)当X是向量,Y有一维和X同维时,则绘制多条曲线,曲线条数等于矩阵的另一维数,X作为这些曲线共同的横坐标。例如:

x=[0:pi/20:2*pi]';

y=sin(x);

Y=[y

2*y

3*y];plot(x,Y)

[练习]:在同一图形窗口中绘制

y=sin(x),y=sin(x+pi/2),y=cos(2*x+pi/2)在[0,2*pi]范围内的图形。

2)只有一个输入参数

格式:plot(y)功能:(1)当y为实向量时,以(向量y)元素的序号作为横坐标值,元素值为纵坐标值,绘制二维曲线。这时,plot(y)相当于

plot(1:length(y),y)

(2)当Y为实矩阵时,则以1:size(Y,1)为横坐标值,以Y的各列为纵坐标值,绘制多条曲线(Y的每一列对应一条曲线)。(3)当Y为复矩阵时,则按列分别以元素的实部和虚部为横、纵坐标绘制多条曲线(曲线的条数等于Y的列数)。这时,plot(y)相当于

plot(real(y),imag(y))

例如:绘制三个同心圆

t=[0:0.01:2*pi]';X=exp(i*t);Y=[X

2*X

3*X];

plot(Y)

3)

有多个输入参数,且都为向量

格式:plot(x1,y1,x2,y2,…,xn,yn)

功能:绘制n条曲线(第i条曲线以xi,yi为横坐标和纵坐标)

例如:在同一坐标系中绘制三条幅值不同的正弦曲线

x=[0:pi/20:2*pi]; y=sin(x);

plot(x,y,x,2*y,x,3*y)

[练习]:在同一图形窗口中绘制

y=sin(x),y=sin(x+pi/2),y=cos(2*x+pi/2)在[0,2*pi]范围内的图形。3.设置颜色、线型和点的绘制方式

在plot函数的输入参数中,还可以增加设置颜色、线型和点的标记方式的选项。

格式:plot(y,style)或plot(x,y,style)或

plot(x1,y1,

style1,x2,y2,style2,…,xn,yn,stylen)

其中,style,style1,…,stylen是字符串,由控制颜色、线型和点的标记方式的字符(或符号)组合而成。例如,“b-.”表示蓝色点画线,“y:d”表示黄色虚线并用菱形符标记数据点。常用的颜色颜色符号颜色符号蓝色(Blue)(默认)b品

色(Magenta)m青色(Cyan)c红色(Red)r绿色(Green)g黄色(Yellow)y白色(White)w黑色(blacK)k常用的线型线型符号线型符号实线(默认-虚线--点划线-.点线:点的标记符号标记符号标记符号实点标记(默认).圆圈标记o叉号标记x十字形标记+星号标记*方块标记s菱形标记d向上的三角形标记^向下的三角形标记v向左的三角形标记<向右的三角形标记>五角星标记p六边形标记h[例]:

用不同的颜色和线型在同一坐标系内绘制曲线y=2e-0.5xsin(2πx)及其包络线,并标记曲线和x轴的交点(x的范围取[0,2*pi])。程序如下:x=(0:pi/100:2*pi)';y1=2*exp(-0.5*x)*[1,-1];y2=2*exp(-0.5*x).*sin(2*pi*x);x1=0:0.5:6;y3=2*exp(-0.5*x1).*sin(2*pi*x1);plot(x,y1,

'g--',x,y2,

'b-',x1,y3,

'ro');

[例]:在同一座标系内,分别用不同颜色和线型绘制曲线y1=0.2e−0.5xcos(4px)和

y2=1.5e−0.5x

cos(px)。标记两曲线交叉点。

程序如下:

x=linspace(0,2*pi,2000);

y1=0.2*exp(-0.5*x).*cos(4*pi*x);

y2=1.5*exp(-0.5*x).*cos(pi*x);

k=find(abs(y1-y2)<1e-2);%查找y1与y2相等点(近似相等)的下标

x1=x(k);%取y1与y2相等点的x坐标

y3=0.2*exp(-0.5*x1).*cos(4*pi*x1);

%求y1与y2值相等点的y坐标

plot(x,y1,x,y2,'k:',x1,y3,'r*');4.1.2图形绘制的辅助操作

包括:图形标注、坐标控制、屏幕控制、图形窗口的分割、图形的保持等内容。

1.图形标注

在绘制图形时,可以对图形加上一些说明,如图形名称、坐标轴说明、图形某一部分的含义等,这些操作称为添加图形标注,以使图形意义更加明确,可读性更强。常用的图形标注命令命令格式功能title(txt)将字符串txt的内容设置为图形的标题。xlabel(txt)设置x轴的标注。ylabel(txt)设置y轴的标注。zlabel(txt)添加对z坐标的文字说明(标注)。text(x,

y,

txt)在图形窗口的(x,y)处添加文字标注txt。坐标x和y使用与所绘制图形相同的坐标系gtext(txt)添加文字标注txt,位置在程序运行时由用户通过单击鼠标左键给出。legend(str1,str2,…)添加图例,用说明性字符串str1,str2等作为标注。legend

off从当前图形中清除图例。

[例]在区间[0,2*pi]内绘制曲线y=2sin(2x)和y=3sin(3x),并添加图形标注。

程序:

x=0:pi/100:2*pi;

y1=2*sin(2*x);y2=3*sin(3*x);

plot(x,y1,

'r-',x,y2,

'b:');

title('2sin(2x)

and

3sin(3x)')

xlabel('x');ylabel('y');

legend('2sin(2x)

',

'3sin(3x)')

上述函数中的说明文字,除使用标准的ASCII字符外,还可使用LaTeX格式的控制字符(LaTeX是一种十分流行的数学排版软件),这样就可以在图形上添加希腊字母、数学符号、公式等内容。在MATLAB支持的LaTeX字符串中,用\bf、\it、\rm控制字符分别定义黑体、斜体和正体字符,受LaTeX字符串控制部分要加大括号{}括起来。

例如:

text(0.3,0.5,‘The

useful

{\bf

MATLAB}’)

使得“MATLAB”一词黑体显示

text(0.3,0.5,'sin({\omega}

t+{\beta})')

得到标注效果sin(wt

+b

)如果想在某个字符后面加上一个上标,则可以在该字符后面跟一个^引导的字符串。例如,e^{a

xt}对应的标注效果为eaxt,而e^a

xt

对应的标注效果为eaxt。类似地可以定义下标,下标是由_引导的,如X_{12}对应的标注效果为X12。常用的LaTex字符标记符符号标记符符号标记符符号\alphaα\phiφ\leq≤\betaβ\psiψ\geq≥\gammaγ\omegaω\div÷\deltaδ\GammaГ\timesх\epsilonε\DeltaΔ\neq≠\zetaζ\ThetaΘ\infty∞\etaη\LambdaΛ\partial∂\thetaθ\PiП\leftarrow←\piπ\SigmaΣ\rightarrow→\rhoρ\PhiΦ\uparrow↑\sigmaσ\PsiΨ\downarrow↓\tauτ\OmegaΩ\leftrightarrow↔

[例]分析以下程序

v=['-1';

'+1'];

t=0:0.05:2*pi;

plot(t,sin(t))

title('y=sin(x)')

xlabel('time(0--2\pi)');

ylabel('value')

text(pi/2,0.9,['\uparrowsin(\pi/2)=',v(2,:)])

text(pi*3/2,-0.9,['\downarrowsin(\pi*3/2)=',v(1,:)])

text(0,-0.6,['Date:

',

date])

[练习]在0≤x≤2p区间内,绘制曲线y1=e−0.5x和y2=cos(4px)e−0.5x,并添加图形标注。程序如下:x=0:pi/100:2*pi;

y1=exp(-0.5*x);

y2=exp(-0.5*x).*sin(2*x);plot(x,y1,x,y2)title('y=e^{-0.5x}sin(2x)

和y=e^{-0.5x}');

%加图形标题xlabel('Variable

X');

%加X轴说明

ylabel('Variable

Y');%加Y轴说明%在指定位置添加图形说明text(1.5,0.5,'y=e^{-0.5x}');text(3,-0.1,'y=cos(4{\pi}x)e^{-0.5x}');legend('y=e^{-0.5x}',

'y=e^{-0.5x}sin(2x)')

%加图例2.坐标控制-axis函数

在绘制图形时,Matlab可以自动根据要绘制曲线数据的范围选择合适的坐标刻度。如果用户对坐标系不满意,也可以利用axis函数对其重新设定。格式:

axis([xmin

xmax

ymin

ymax])

axis([xmin

xmax

ymin

ymax

zmin

zmax])

axis函数的其他用法:

axis

auto:使用默认设置。

axis

equal:纵、横坐标轴采用等长刻度。

axis

square:产生正方形坐标系(默认为矩形)。

axis

on/off:显示/取消坐标轴。

x=-pi:pi/50:pi;

xx=x+(x==0

|

x==pi

|

x==-pi)*eps;

yy=log(abs(sin(xx)));

plot(x,yy);

title('y=log(|sin(x)|)');

axis([-3.2

3.2 -4.5

0])

xlabel('x');

ylabel('y');

grid

on

[例]

绘制

y

=

log sin

x

)在区间[-pi,

pi]内的图形

grid

on/off命令控制是画还是不画网格线,

box

on/off命令控制是加还是不加边框线。[例]绘制曲线y

=sin

t

sin(9t)及其包络线。

程序如下:

t=(0:pi/100:pi)';

y1=sin(t)*[1,-1];

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

plot(t,[y1,y2])

grid

on;

box

on;

axis

equal%包络线函数值%加网格线%加坐标边框%坐标轴采用等刻度3

图形窗口管理创建新的图形窗口,并作为当前图形输

figure出窗口

figure(n)

创建或显示序号为n的图形窗口

clf

清除当前图形窗口中的图形4.

图形的保持

hold

on/hold

off

(绘制新的图形时)保持/清除当前图形窗口中已有的图形。

[例]在同一座标系内画出y=sin(x),y=x,y=tan(x)在区间[0,pi/4]内的图形。

figure

x=0:0.01:pi/4;

y1=sin(x);

y2=tan(x);

plot(x,x);

hold

on

plot(x,y1,

'r--');

plot(x,y2,

'g.-')

legend('y=x',

'y=sin(x)

',

'y=tan(x)',

'Location',

'Northwest')

hold

off5.图形窗口的分割

subplot(m,n,p)将当前窗口分割成m行n列,并将其中第p个子窗口作为当前的图形窗口(字窗口按从左向右、由上至下的顺序编号)

[例]分析以下程序的运行结果

figure

x=0:pi/100:2*pi;

y=2*sin(2*x)+3*sin(3*x)*i;

subplot(1,2,1),plot(x,y)

title('This

is

the

result

of

plot(x,y)');

xlabel('x');

ylabel('real(y)');

subplot(1,2,2),

plot(y)

title('This

is

the

result

of

plot(y)')

xlabel('real(y)')

ylabel('imag(y)')

[例]在图形窗口中,以子图的形式同时绘制多根曲线

程序如下:

figure

subplot(2,2,[1

3]);%也可以改为subplot(1,2,1)

fplot('x-cos(x^3)-sin(2*x^2)',[-3,3]);

xlabel('(a)');

subplot(2,2,2);

x=-3:0.1:3;

y2

=

sin(2.*x.^2);

plot(x,y2);xlabel('(b)');

axis([-3

3

-1.2

1.2])

subplot(2,2,4);

y3

=

cos(x.^3);

plot(x,y3);xlabel('(c)');

axis([-3

3

-1.2

1.2]);

grid

on;4.1.3

在其它坐标系绘制曲线

1.对数坐标系绘图

函数:semilogx,semilogy和loglog

格式:semilogx(x,y)

功能:在半对数坐标系中绘图,x轴用以10为底的对数刻度标定。这类似于plot(log10(x),y),但是对于log10(0)不给出警告信息。

格式:semilogy(x,y)

功能:在半对数坐标系中绘图,y轴用以10为底的对数刻度标定。这类似于plot(x,log10(y)),但是对于log10(0)不给出警告信息。格式:loglog(x,y)功能:在对数坐标系中绘图。两个坐标轴均用以10为底的对数刻度标定。这类似于plot(log10(x),log10(y)),但是对于log10(0)不给出警告信息。

[例]绘制y

=10x的对数坐标图并与直角线性坐标图进行比较。

程序如下:

x=0:0.1:8;y=10.^x;

subplot(2,2,1);plot(x,y);

title('plot(x,y)');grid

on;

subplot(2,2,2);semilogx(x,y);

title('semilogx(x,y)');grid

on;

subplot(2,2,3);semilogy(x,y);

title('semilogy(x,y)');grid

on;

subplot(2,2,4);loglog(x,y);

title('loglog(x,y)');gridon;[例]:

设lny=a*x+b,

y=exp(a*x+b),

a=0.5,

b=1绘制y坐标为对数坐标的函数图形。figurex=linspace(0,10,101);y=exp(0.5*x+1);subplot(1,2,1);plot(x,y);subplot(1,2,2);semilogy(x,y);[练习]:

绘制y=10*x^3的对数坐标图形.2.极坐标系绘图

函数:polar

格式:polar(theta,rho)

polar(theta,rho,s)

其中,输入变量theta为点的极角(以弧度为单位),rho为点的极径,s为图形属性设置选项。

程序如下:

theta=linspace(0,2*pi,101);

r=3*(1+cos(theta));

polar(theta,r,

'r');[例]:画出心形线r

=3(1

+cosq)[练习]绘制阿基米德螺线r

=a

+bq

,q

˛

[0,6p

]

[练习]

取不同的n,

绘制玫瑰线

r

=

cosnqq

˛

[0,2p

]3.双纵坐标绘图函数plotyy可以使用plotyy函数绘制出具有不同纵坐标标度的两个图形。因而,可以把两个具有不同量纲、不同数量级的函数绘制在同一坐标中。调用格式:plotyy(x1,y1,x2,y2)plotyy(x1,y1,x2,y2,fun)plotyy(x1,y1,x2,y2,

fun1,fun2)其中,x1—y1对应一条曲线,x2—y2对应另一条曲线。横坐标的标度相同,纵坐标有两个,左纵坐标用于x1—y1数据对,右纵坐标用于x2—y2数据对

[例如]:在同一图形窗口中绘制正弦函数和指数函数的图形。

x=0:0.01:2*pi;

y=sin(x);

z=exp(x);

plotyy(x,y,

x,z,

'plot',

'semilogy')

[练习]:用不同标度在同一坐标内绘制曲线y1=0.2e−0.5xcos(4px)和y2=1.5e−0.5x

cos(px)x

˛

[0,2p

]4.1.4

简易曲线绘制函数——fplot,ezplot,ezpolar

1.用自适应采样的方式绘制曲线—fplot函数

格式:fplot(f,

lims,tol,选项)

其中,f可以是函数表达式(必须是以x为自变量的合法表达式,并且用单引号括起来),也可以是函数名(要用单引号括起来),或者内联函数对象或函数句柄(不能用单引号括起来);lims取

[xmin,

xmax]或[xmin,

xmax,ymin,ymax]为x,y的取值范围,以行向量形式出现;tol为相对允许误差,其系统默认值为2e-3。选项与plot函数中的相同,用于控制颜色、线型、点的绘制方式。

常用的格式:

fplot(f,[xmin,

xmax])

或fplot(f,[xmin,xmax,ymin,ymax])在区间[-3,3]

程序如下:

fplot('x-cos(x^3)-sin(2*x^2)',

[-3,3])

fplot('x-cos(x^3)-sin(2*x^2)',

[-3,3],'r--')

fplot('x-cos(x^3)-sin(2*x^2)',

[-3,3],1e-2,

'r--')[例]绘制函数y

=x-cos

x3

-sin(2x

2

)内的图形。2.绘制二维曲线的简易函数—ezplot(1)对于一元函数f

(x),ezplot函数的调用格式为

ezplot(f,[a,b])

功能:在区间a<x

<b绘制f(x)的图形。a、b缺省时,在区间−2p

<x

<2p

绘制f

=f

(x)的图形。

例如:ezplot('x-cos(x^3)-sin(2*x^2)',[-3,3])(2)对于二元函数f

(x,y),ezplot函数的调用格式为

ezplot(f,[a,b,c,d])

功能:在区间a

<x

<b和c

<y

<d绘制f(x,y)=0的图形。a、b、c、d缺省时,在区间−2p

<x

<2p和−2p

<y

<2p绘制f

(x,y)的图形。

例如:ezplot('x^2+y^2-4',[-2.5

2.5])或ezplot('x^2+y^2-4',[-2.5 2.5-2.5

2.5])(3)对于参数方程x

=x(t)和y

=y(t),ezplot函数的调用格式为

ezplot(fx,

fy,

[a,b])

功能:在区间a

<t

<b绘制x

=fx(t)和y

=fy(t)的图形。a、b缺省时,在区间0<t

<2p绘制图形。

例如:ezplot('5*cos(t)','3*sin(t)',[0,2*pi])3.绘制由参数方程表示的三维曲线—ezplot3函数

格式:ezplot3(x,y,z,[a,b])

功能:在区间a

<t

<b绘制由参数方程x

=x(t),y

=y(t)和z

=z(t)确定的图形。未指定区间时,默认在区间0<t

<2p

绘制图形。例如,绘制参数方程

x

=sin

t

+t

cos

t

表示的图形,命令如下:

ezplot3('sin(t)+t*cos(t)','cos(t)-t*sin(t)','t',[0,10*pi]);

y

=

cos

t

-

t

sin

tt

˛

[0,10p

]z

=

t4.绘制由极坐标方程表示的二维曲线—ezpolar函数

格式:ezpolar(f)

功能:绘制极坐标曲线rho=f(theta),缺省的参数范围为[0,2*pi]。

格式:ezpolar(f,[a,b])

功能:绘制极坐标曲线rho=f(theta),范围为[a

b]。

例如:绘制心脏线r

=3(1

+cosq),命令如下:

ezpolar('3*(1+cos(t))',[0,2*pi])4.1.5

特殊二维图形的绘制

函数库:specgraph

1.二维统计分析图:条形图

(bar,

barh)、饼图(pie)、直方图(hist)、

pareto

散点图:(scatter,plotmatrix)

误差条形图(errorbar)

2.离散杆状图(stem)、阶梯状图(stairs)

3.面域图(area),填充图(fill)

4.向量图:射线图(compass),羽毛图(feather)

5.彗星图(comet)1.

条形图

MATLAB中提供了多个函数可绘制各种条形图,bar函数绘制柱形图,barh函数绘制水平条形图。下面以bar函数为例,说明条形图函数的用法。bar函数的基本用法与plot函数相似,其调用格式为

bar(x,width,style):

当x是m

×n阶的矩阵时,绘制的条形图以分组或堆积的形式表现。矩阵中每一行元素绘制在一组中,每一列元素绘制在每组中相对应的位置上。其中,width设置条形的相对宽度和控制在一组内条形的间距,默认值为0.8,style指定条形的排列模式,类型有'group'(分组)和'stack'(堆积),默认时采用'group'模式。

程序如下:

x=[51,82,34,47;67,78,68,90;78,85,65,50]';

subplot(1,2,1);

bar(x,'group');

title('Group');

axis([0

5

0

100]);

subplot(1,2,2);

barh(x,

'stack');

title('Stack');【例3.10】表3.5

所示为某公司3类产品各季度的销售额(单位:万元),分别按季度绘制簇状柱形图和堆积条形图。表3.5产品全年销售额(单位:万元)第一季度第二季度第三季度第四季度产品A51823447产品B67786890产品C788565502.饼图饼图能反映每一数值相对于总数值的大小。MATLAB中绘制饼图的函数是pie,其调用格式为

pie(x,

explode)

pie函数使用x中的数据绘制一个饼图,x可以是向量或矩阵。explode是与x同等大小的向量或矩阵,与explode的非零值对应的部分将从饼图中心分离出来。缺省explode时,饼图是一个整体。

例如,用饼图分析例3.10中产品A该年度各季度的产品销售情况:

pie(x(:,1),[0

0

0

1]);title('饼图');

legend('一季度','二季度','三季度','四季度');3.散点图

散点图是数据点在直角坐标系平面上的分布图。

MATLAB中绘制散点图的函数是scatter格式:scatter(x,y,s,c,'filled')

其中,x、y、s和c为同等大小的向量。x和y用于定位数据点;s指定绘图点的大小(以象素为单位),s也可以是一个标量,则所有数据点同等大小;c指定绘图所使用的色彩,c也可以是一个标量,所有数据点使用同一种颜色;'filled'表示填充绘图点,默认时,数据点是空心的。

例如:x=rand(20,1);y=rand(20,1);L=x<y;

scatter(x(L),y(L),20,

'r+');hold

on;plot([0 1],[0

1],

'm')

scatter(x(~L),y(~L),20,

'bo',

'filled');hold

off4.

误差条形图

函数errorbar

格式:errorbar(x,y,e,s)

功能:绘制数据点(x(i),y(i))的误差条形图。误差条对称地分布在yi的上方和下方,长度为ei。

格式:errorbar(x,y,l,u,s)

功能:绘制数据点(x(i),y(i))的误差条形图。误差条分布在yi上方的长度为ui,下方的长度为li。字符串s设置颜色和线型。

例:x=1:10;

y=0.1*x.^2+x+2;

y1=y+randn(1,10);

errorbar(x,y

,y1-y)5.离散杆状图函数:stem格式:stem

(Y)或stem

(X,Y)或

stem(X,Y,'filled')功能:绘制数据点X(i),Y(i)的离散杆状图。例如:绘制向量(268785)的离散杆状图。程序:X=1:6;Y=[2

6

8

7

8

5];stem(Y)或stem(X,Y)或stem(X,Y,

'filled')axis([0

7

0

12])6.阶梯状图

函数:stairs

格式:stairs(Y)或stairs(X,

Y)或stairs(X,Y,Style)

功能:绘制数据点X(i),Y(i)的阶梯状图,Style指定绘图方式(颜色、线型、点形)。

例如:绘制向量(268785)的离散杆状图。

程序:X=1:6;Y=[2

6

8

785];stairs(Y)或stairs(X,Y)或stairs(X,Y,'rd:')axis([0

7012])7.面域图

函数:area

格式:area(Y)或area(X,Y)

例如:

x=0:pi/20:2*pi;

y=sin(x);

area(x,y)

axis([0

2*pi -1.2

1.2])8.填充图

填充图是将数据的起点和重点连成多边形,并填充颜色。绘制填充图的函数是fill,其调用格式为

fill(x1,y1,选项1,x2,y2,选项2,…)

fill函数按向量元素下标渐增次序依次用直线段连接x、y对应元素定义的数据点。假若这样连接所得折线不封闭,那么MATLAB将自动把该折线的首尾连接起来,构成封闭多边形,然后将多边形内部涂满指定的颜色。

【例3.12】绘制一个红色的圆。

程序如下:

n=50;

dt=2*pi/n;

t=0:dt:2*pi;

x=sin(t);y=cos(t);

fill(x,y,

'r');

axis([-1.5

1.5

-1.5

1.5]);axis

equal;9.复数向量图

MATLAB中除可以用plot函数绘制复数向量图外,还可用

compass和feather函数,compass函数绘制围绕原点的罗盘图,feather函数绘制围绕x轴的羽毛图,其调用格式为

compass(z)或compass(u,v)

featuher(z)或faether(u,v)

其中,z为复数向量,u、v分别为复数向量的实部和虚部。例如:

theta

=

(-120:10:60)*pi/180;

r

=

2*ones(size(theta));

[u,v]

=

pol2cart(theta,r);

subplot(1,2,1)

pass(u,v);title('compass');

subplot(1,2,2);feather(u,v);

title('feather')10.彗星图

函数:comet

格式:comet(x,y)

功能:绘制数据点x(i),y(i)的彗星轨迹图。

例如:

t=-pi:pi/1000:pi;

comet(t,

tan(sin(t))-sin(tan(t)))4.2

三维图形的绘制

4.2.1

三维曲线的绘制

1.最基本的绘制三维曲线的函数—plot3

调用格式:

plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…,xn,yn,zn,选项n)

其中,每一组x,y,z组成一组曲线的坐标参数,选项的定义和plot函数相同。当x、y、z是同维向量时,则x、y、z对应元素构成一条三维曲线;当

x、y、z是同维矩阵时,则以x、y、z对应列元素绘制三维曲线,曲线条数等于矩阵列数。

【例3.13】绘制三维曲线

程序如下:

t=0:pi/10:10*pi;x=sin(t)+t.*cos(t);

y=cos(t)-t.*sin(t);z=t;

plot3(x,y,z);

axis([-30

30

-30

30

0

35])

title('Line

in

3-D

Space');

xlabel('X');ylabel('Y');zlabel('Z');

grid

on;

y

=

cos

t

-

t

sin

t

x

=

sin

t

+

t

cos

tt

˛

[0,10p

]z

=

t

2.简易绘制三维曲线的函数ezplot3

程序:

ezplot3('sin(t)+t*cos(t)','cos(t)-t*sin(t)','t',[0,10*pi])

例如:绘制三维曲线

y

=

cos

t

-

t

sin

t

对于参数形式表示的三维曲线,还可以用简易绘图函数ezplot3绘制。

格式:ezplot3(x,y,z,[a,b])

功能:在区间a

<t

<b绘制由参数方程x

=x(t),y

=y(t)和z

=z(t)确定的三维曲线。未指定区间时,默认在区间0<t

<2p

绘制图形。

x

=

sin

t

+

t

cos

tt

˛

[0,10p

]z

=

t4.2.2

三维曲面的绘制

Matlab中绘制三维曲面的基本方法:(按某种规则)在曲面上取mxn个点Pij,设它们的x坐标、y坐标和z坐标分别构成矩阵X,Y,Z,则用mesh(X,Y,Z)或surf(X,Y,Z)就可以画出该曲面。1.meshgrid函数

对于函数曲面,即由z=f(x,y),a<x<b,c<y<d表示的曲面,通常,先在x轴的区间[a,b]内取n个点,设这些点的x坐标构成向量x;

再在y轴的区间[c,d

]内取m个点,设这些点的y坐标构成向量y;由各划分点分别作平行于两坐标轴的直线,则得到二维矩形区域a<x<b,c<y<d

内的mxn个网格点。这mxn个网格点的x坐标构成mxn的矩阵X,它们的y坐标构成mxn的矩阵Y,即第(i,j)个网格点的坐标为

(X(i,j),Y(i,j))。

Matlab专门提供了一个函数meshgrid,它的功能就是由上面的向量x,y生成矩阵X,Y。

格式:[X,Y]=meshgrid(x,y);

当y=x时,可以简化为[X,Y]=meshgrid(x);

其中,x,y为向量。

将矩形区域a<x<b,c<y<d

内的mxn个网格点

(X(i,j),Y(i,j)对应到曲面上,就得到曲面上的mxn个点,第(i,j)个网格点的坐标为(X(i,j),Y(i,j),Z(I,j)),Z(i,j)=f(X(i,j),Y(i,j)),因此,曲面上对应的mxn个点的x,y坐标构成的矩阵分别是由以上函数生成的X,Y.

z坐标构成的矩阵Z可以根据Z(i,j)=f(X(i,j),Y(i,j))利用点运算得到。2.绘制曲面的函数

MATLAB提供了mesh函数和surf函数来绘制三维曲面图。mesh函数用于绘制三维网格图;surf用于绘制三维曲面图,各线条之间的补面用颜色填充。以下介绍mesh的使用格式(surf与mesh的使用格式相同):

mesh(X,Y,Z,C),其中,X,Y,Z

分别是由曲面上mxn个点的x坐标、y坐标和z坐标构成的mxn的矩阵,即:(X(i,j),Y(i,j),Z(i,j))是第(i,j)个网格点Pij的坐标,

C(i,j)是Pij的颜色值。

mesh(X,Y,Z)使用C=Z(颜色值正比于高度值)

mesh(x,y,Z)或mesh(x,y,Z,C)此处,使用两个向量代替两个矩阵,要求:length(x)=n,

length(y)=m,且[m,n]=size(Z),第(i,j)个网格点Pij的坐标为

(x(j),y(i),Z(i,j))!

此外,mesh(Z)和mesh(Z,C)使用x=1:n及y=1:m。即mesh(Z)等价于mesh(1:n,1:m,Z),mesh(Z,C)等价于mesh(1:n,1:m,Z,C)

例:绘制函数z=x*exp(-x^2-y^2)在[-2,2]x[-3,3]内的图形。

程序如下:

x=-2:0.1:2;

y=-3:0.1:3;

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

Z=X.*exp(-X.^2-Y.^2);

mesh(X,Y,Z);

注意:

1)理解meshgrid函数的用法。

2)将mesh(X,Y,Z)改为plot3(X,Y,Z)或mesh(x,y,Z)观察结果有何变化?[例]绘制三维曲面图z

=sinx2

+cosy2,x˛

[0,p],y˛

[0,p/2]。

程序如下:

[x,y]=meshgrid(0:pi/100:pi,

0:pi/100:pi/2);

z=sin(x.^2)+cos(y.^2);

mesh(x,y,z);

axis([0

4

0

1.8

-1.5

1.5]);其它几个函数:

1)

contour(X,Y,Z,N/V)和contour3(X,Y,Z,N/V)--

绘制等高线

其中,X,Y,Z的含义和mesh(X,Y,Z)中相同;

N/V为可选输入参数,N为要绘制的等高线的条数;亦可选择输入参数V,这里,V为一数值数组,用于指定等高线的高度值(z的值)。

此外,coutourf用于绘制填充的等高线图,其调用格式与coutour完全一致。

2)meshc函数—与函数mesh调用方式相同,只是该函数在mesh的作用之上又增加了contour函数的功能,即绘制相应的等高线。

3)meshz函数—与mesh调用的方式也相同,不同的是该函数在mesh的作用之上增加了边界面屏蔽。在[-8,8]x[-8,8]范x2

+

y2sin

x2

+

y2

例:绘制函数z

=围内的图形。

例:用mesh,

meshc,

meshz绘制

z=

x2

+y2

在[-4,4]范围内的图形;

并用contour,

contour3,contourf绘制等值线。3.几种特殊三维曲面(1)sphere函数。sphere函数用于绘制三维球面,其调用格式为

[x,y,z]=sphere(n)

该函数将产生(n

+1)×(n

+1)矩阵x、y、z,采用这3个矩阵可以绘制出圆心位于原点、半径为1的单位球体。若在调用该函数时不带输出参数,则直接绘制所需球面。n决定了球面的圆滑程度,其默认值为20。若n值取得较小,则将绘制出多面体表面图。(2)cylinder函数。cylinder函数用于绘制柱面,其调用格式为

[x,y,z]=

cylinder(R,n)

其中,R是一个向量,存放柱面各个等间隔高度上的半径;n表示在圆柱圆周上有n个间隔点,默认时表示有20个间隔点。例如,cylinder(3)生成一个圆柱,cylinder([10,1])生成一个圆锥,而

t=0:pi/100:4*pi;

R=sin(t);

cylinder(R,30)

生成一个正弦型柱面。(3)peaks函数。peaks函数(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论