優(yōu)秀生matlab培訓lecture78圖形繪制基礎_第1頁
優(yōu)秀生matlab培訓lecture78圖形繪制基礎_第2頁
優(yōu)秀生matlab培訓lecture78圖形繪制基礎_第3頁
優(yōu)秀生matlab培訓lecture78圖形繪制基礎_第4頁
優(yōu)秀生matlab培訓lecture78圖形繪制基礎_第5頁
已閱讀5頁,還剩79頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第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從當前圖形中清除圖例。

[例]在區(qū)間[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π\(zhòng)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區(qū)間內,繪制曲線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

)在區(qū)間[-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

圖形窗口管理創(chuàng)建新的圖形窗口,并作為當前圖形輸

figure出窗口

figure(n)

創(chuàng)建或顯示序號為n的圖形窗口

clf

清除當前圖形窗口中的圖形4.

圖形的保持

hold

on/hold

off

(繪制新的圖形時)保持/清除當前圖形窗口中已有的圖形。

[例]在同一座標系內畫出y=sin(x),y=x,y=tan(x)在區(qū)間[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為相對允許誤差,其系統(tǒng)默認值為2e-3。選項與plot函數中的相同,用于控制顏色、線型、點的繪制方式。

常用的格式:

fplot(f,[xmin,

xmax])

或fplot(f,[xmin,xmax,ymin,ymax])在區(qū)間[-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])

功能:在區(qū)間a<x

<b繪制f(x)的圖形。a、b缺省時,在區(qū)間?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])

功能:在區(qū)間a

<x

<b和c

<y

<d繪制f(x,y)=0的圖形。a、b、c、d缺省時,在區(qū)間?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])

功能:在區(qū)間a

<t

<b繪制x

=fx(t)和y

=fy(t)的圖形。a、b缺省時,在區(qū)間0<t

<2p繪制圖形。

例如:ezplot('5*cos(t)','3*sin(t)',[0,2*pi])3.繪制由參數方程表示的三維曲線—ezplot3函數

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

功能:在區(qū)間a

<t

<b繪制由參數方程x

=x(t),y

=y(t)和z

=z(t)確定的圖形。未指定區(qū)間時,默認在區(qū)間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.二維統(tǒng)計分析圖:條形圖

(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也可以是一個標量,所有數據點使用同一種顏色;'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])

功能:在區(qū)間a

<t

<b繪制由參數方程x

=x(t),y

=y(t)和z

=z(t)確定的三維曲線。未指定區(qū)間時,默認在區(qū)間0<t

<2p

繪制圖形。

x

=

sin

t

+

t

cos

tt

?

[0,10p

]z

=

t4.2.2

三維曲面的繪制

Matlab中繪制三維曲面的基本方法:(按某種規(guī)則)在曲面上取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軸的區(qū)間[a,b]內取n個點,設這些點的x坐標構成向量x;

再在y軸的區(qū)間[c,d

]內取m個點,設這些點的y坐標構成向量y;由各劃分點分別作平行于兩坐標軸的直線,則得到二維矩形區(qū)域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為向量。

將矩形區(qū)域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. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論