中南大學MATLAB課件(第5章MATLAB繪圖)_第1頁
中南大學MATLAB課件(第5章MATLAB繪圖)_第2頁
中南大學MATLAB課件(第5章MATLAB繪圖)_第3頁
中南大學MATLAB課件(第5章MATLAB繪圖)_第4頁
中南大學MATLAB課件(第5章MATLAB繪圖)_第5頁
已閱讀5頁,還剩78頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、第5章 MATLAB繪圖5.1 二維圖形5.2 三維圖形5.3 三維圖形的精細處理5.4 隱函數 繪圖5.5 低層繪圖操作5.6 光照和材質處理5.7 圖像顯示與動畫制作 5.1 二維圖形二維圖形5.1.1 繪制二維曲線的基本函數1. plot函數的基本用法plot函數的基本調用格式為:plot(x,y) 其中x和y為長度相同的 向量,分別用于存儲x坐標和y坐標數據。x(1)x(2)x(i)x(n)y(1)y(2)y(i)y(n)在平面上繪制圖形,采用不同的坐標系。在平面直角坐標系xoy內,用點(x(1),y(1),(x(2),y(2), (x(i),y(i),(x(n),y(n) 繪制曲線。

2、xy 例例5.1 在在0X2 區間內,繪制曲線區間內,繪制曲線 y=2e-0.5xsin(2x)。 程序如下:程序如下: x=0:pi/100:2*pi;y=2*exp(-0.5*x).*sin(2*pi*x); plot(x,y) 例例5.2 繪制繪制 參數方程參數方程 曲線。曲線。2cos3tsinxttytt,程序如下程序如下:t=-pi:pi/100:pi;x=t.*cos(3*t);y=t.*sin(t).*sin(t);plot(x,y); 說明:說明:(1)當x是向量,y是有一維與x同維的矩陣時,則繪制出多根不同色彩的曲線。曲線條數等于y矩陣的另一維數,x被作為這些曲線共同的橫坐

3、標。(多條曲線) x=linspace(0,2*pi,100); y=sin(x); cos(x); plot(x,y)(2)當x,y是同維矩陣時,則以x,y 對應 列元素為橫、縱坐標分別繪制曲線,曲線條數等于矩陣的列數。 (多條曲線)(3)plot函數最簡單的調用格式是只包含一個輸入參數:plot(x)。X是實向量時: 等效于 plot(1:length(x), x)X是實矩陣時: 各列X是復數向量時:各元素的 實部、虛部 2含多個輸入參數的含多個輸入參數的plot函數函數含多個輸入參數的plot函數調用格式為:plot(x1,y1,x2,y2,xn,yn)3含含 選項選項 的的plot函數

4、函數含選項的plot函數調用格式為:plot(x1,y1,選項1,x2,y2, 選項2,xn,yn,選項n)選項選項 說明曲線的 線型、顏色或標記符號 例例5.3 用不同線型和顏色在同一坐標內繪制曲線用不同線型和顏色在同一坐標內繪制曲線y=2e-0.5x sin(2x)及其包絡線。及其包絡線。程序如下: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:12)/2;y3=2*exp(-0.5*x1).*sin(2*pi*x1);plot(x,y1,g:,x,y2,b-,x1,y3,rp);012

5、34567-2-1.5-1-0.500.511.52 4雙雙 縱坐標縱坐標 函數函數plotyy plotyyplotyy函數是函數是MATLAB 7 MATLAB 7 新增的函數。它能把新增的函數。它能把函數值具有函數值具有不同量綱、不同數量級不同量綱、不同數量級的兩個函的兩個函數繪制在同一坐標中。調用格式為:數繪制在同一坐標中。調用格式為: plotyyplotyy(x1,y1,(x1,y1,x2,y2x2,y2) ) 其中其中x1-y1x1-y1對應一條曲線,對應一條曲線,x2-y2x2-y2對應另一對應另一條曲線。條曲線。橫坐標橫坐標的標度相同,的標度相同,縱坐標縱坐標有兩個,有兩個,

6、左縱坐標左縱坐標用于用于x1-y1x1-y1數據對,數據對,右縱坐標右縱坐標用于用于x2-y2x2-y2數據對。數據對。 例例5.4 用不同標度在同一坐標內繪制曲線用不同標度在同一坐標內繪制曲線y1=e-0.5xsin(2x)及曲線及曲線y2=1.5e-0.1xsin(x)。 程序如下: x1=0:pi/100:2*pi; x2=0:pi/100:3*pi; y1=exp(-0.5*x1).*sin(2*pi*x1); y2=1.5*exp(-0.1*x2).*sin(x2); plotyy(x1,y1,x2,y2);0246810-1010246810-202 5.1.2 繪制圖形的輔助操作

7、繪制圖形的輔助操作 1. 圖形標注圖形標注 有關圖形標注函數的調用格式為:有關圖形標注函數的調用格式為: title(圖形名稱圖形名稱) xlabel(x軸說明軸說明) ylabel(y軸說明軸說明) text(x,y,圖形說明圖形說明) legend(圖例圖例1,圖例圖例2,) 2. 坐標控制坐標控制函數的調用格式為:函數的調用格式為:axis(xmin xmax ymin ymax zmin zmax)axis函數功能豐富,常用的用法還有:函數功能豐富,常用的用法還有:axis equal 縱、橫坐標軸采用等長刻度縱、橫坐標軸采用等長刻度axis square 產生正方形坐標系產生正方形坐

8、標系(缺省為矩形缺省為矩形)axis auto 使用缺省設置使用缺省設置axis off 取消坐標軸取消坐標軸axis on 顯示坐標軸顯示坐標軸grid on/off命令控制是畫還是不畫網格線,不帶命令控制是畫還是不畫網格線,不帶參數的參數的grid命令在兩種狀態之間進行切換。命令在兩種狀態之間進行切換。box on/off命令控制是加還是不加邊框線,不帶命令控制是加還是不加邊框線,不帶參數的參數的box命令在兩種狀態之間進行切換。命令在兩種狀態之間進行切換。 例例5.5 繪制繪制分段函數分段函數曲線并添加圖形標注。曲線并添加圖形標注。04246( )5/26818xxxf xxxx,224

9、2011, 120:0.5:2.521, 22.5360ttztttttPt , , 其中 t=0:0.05:2.5;z4=t.2 .* (0=t & t1 ) + ( t.2-1) .* (1=t & t2 ) +( t.2-2*t+1) .* (2=t & t=8 y=y,1; elseif x0=6 y=y,5-x0/2; elseif x0=4 y=y,2; elseif x0=0 y=y,sqrt(x0); endendplot(x,y)axis(0 10 0 2.5) %設置坐標軸范圍title(分段函數曲線); %加圖形標題xlabel(Variable

10、X); %加X軸說明ylabel(Variable Y); %加Y軸說明text(2,1.3,y=x1/2);%在指定位置 %添加圖形說明text(4.5,1.9,y=2);text(7.3,1.5,y=5-x/2);text(8.5,0.9,y=1);04246( )5/26818xxxf xxxx,演示在繪圖窗口演示在繪圖窗口 直接修改操作直接修改操作if x04 y=y, sqrt(x0); elseif x06 y=y,2; elseif x08 y=y, 5-x0/2; else y=y,1; end 3. 圖形保持圖形保持 一般情況下,繪圖命令每執行一次就刷新當前圖形窗口,圖形窗口

11、原有圖形將不復存在。若希望在已存在的圖形上再繼續添加新的圖形,可使用圖形保持命令hold。hold on/off命令控制是保持原有圖形還是刷新原有圖形,不帶參數的hold命令在兩種狀態之間進行切換。 例例5.6 用圖形保持功能在同一坐標內繪制曲線用圖形保持功能在同一坐標內繪制曲線y=2e-0.5xsin(2x) 及其及其 包絡線。包絡線。 程序如下:x=(0:pi/100:2*pi);y1=2*exp(-0.5*x)*1,-1;y2=2*exp(-0.5*x).*sin(2*pi*x);plot(x,y1,b:);axis(0,2*pi,-2,2); %設置坐標hold on; %設置圖形保持

12、狀態plot(x,y2,k);legend(包絡線,包絡線,曲線y); %加圖例hold off; %關閉圖形保持grid %網格線控制 4. 圖形窗口的分割圖形窗口的分割 圖形窗口的分割成多個繪圖區,在各繪圖區分別繪制圖形。subplot函數的調用格式為: subplot(m,n,p)例5.7 在一個圖形窗口中以子圖形式同時繪制正弦、余弦、正切、余切曲線。 程序如下: x=linspace(0,2*pi,60); y=sin(x);z=cos(x); t=sin(x)./(cos(x)+eps); ct=cos(x)./(sin(x)+ eps ); subplot(2,2,1); plot

13、(x,y);title(sin(x);axis (0,2*pi,-1,1); subplot(2,2,2); plot(x,z);title(cos(x);axis (0,2*pi,1,1); subplot(2,2,3); plot(x,t);title(tangent(x);axis (0,2*pi,-40,40); subplot(2,2,4); plot(x,ct);title(cotangent(x);axis (0,2*pi,-40,40); 對圖形窗口靈活分割。請看下面的程序。對圖形窗口靈活分割。請看下面的程序。 x=linspace(0,2*pi,60); y=sin(x);z

14、=cos(x); t=sin(x)./(cos(x)+eps); ct=cos(x)./(sin(x)+eps); subplot(2,2,1); %選擇選擇22個區中的個區中的1號區號區 stairs(x,y);title(sin(x)-1);axis (0,2*pi,-1,1); subplot(2,1,2); %選擇選擇21個區中的個區中的2號區號區 stem(x,y);title(sin(x)-2);axis (0,2*pi,-1,1); subplot(4,4,3); %選擇選擇44個區中的個區中的3號區號區 plot(x,y);title(sin(x);axis (0,2*pi,-

15、1,1); subplot(4,4,4); %選擇選擇44個區中的個區中的4號區號區 plot(x,z);title(cos(x);axis (0,2*pi,-1,1); subplot(4,4,7); %選擇選擇44個區中的個區中的7號區號區 plot(x,t);title(tangent(x);axis (0,2*pi,-40,40); subplot(4,4,8); %選擇選擇44個區中的個區中的8號區號區 plot(x,ct);title(cotangent(x);axis (0,2*pi,-40,40); 5.1.3 繪制二維圖形的其他函數繪制二維圖形的其他函數1. 其他形式的線性直

16、角坐標圖其他形式的線性直角坐標圖在線性直角坐標系中,其他形式的圖形有在線性直角坐標系中,其他形式的圖形有條形圖條形圖、階梯圖階梯圖、桿圖桿圖和和填充圖填充圖等,所等,所采用的函數分別是:采用的函數分別是:bar(x,y,選項選項)stairs(x,y,選項選項)stem(x,y,選項選項)fill(x1,y1,選項選項1,x2,y2,選項選項2,) 例例5.8 分別以條形圖、填充圖、階梯圖和桿圖分別以條形圖、填充圖、階梯圖和桿圖形式繪制曲線形式繪制曲線y=2e-0.5x。 程序如下:程序如下: x=0:0.35:7; y=2*exp(-0.5*x); subplot(2,2,1);bar(x,

17、y,g); title(bar(x,y,g);axis(0,7,0,2); subplot(2,2,2);fill(x,y,r); title(fill(x,y,r);axis(0,7,0,2); subplot(2,2,3);stairs(x,y,b); title(stairs(x,y,b);axis(0,7,0,2); subplot(2,2,4);stem(x,y,k); title(stem(x,y,k);axis(0,7,0,2); 2極坐標圖極坐標圖polar函數用來繪制極坐標圖,其調用格式為:函數用來繪制極坐標圖,其調用格式為:polar(theta,rho,選項選項)其中其中

18、theta為極坐標極角,為極坐標極角,rho為極坐標矢徑,選為極坐標矢徑,選項的內容與項的內容與plot函數相似。函數相似。例例5.9 繪制繪制=sin(2)cos(2)的極坐標圖。的極坐標圖。 程序如下:程序如下: theta=0:0.01:2*pi; rho=sin(2*theta).*cos(2*theta); polar(theta,rho,k); 3對數坐標對數坐標 圖形圖形 MATLAB提供了繪制對數和半對數坐標曲線的提供了繪制對數和半對數坐標曲線的函數,調用格式為:函數,調用格式為: semilogx(x1,y1,選項選項1,x2,y2,選項選項2,) semilogy(x1,y

19、1,選項選項1,x2,y2,選項選項2,) loglog(x1,y1,選項選項1,x2,y2,選項選項2,) 例例5.10 繪制繪制y=10 x2的對數坐標圖并與直角線的對數坐標圖并與直角線性坐標圖進行比較。性坐標圖進行比較。 例例5.10 繪制繪制y=10 x2的對數坐標圖并與直角線性坐標的對數坐標圖并與直角線性坐標圖進行比較。圖進行比較。 程序如下:程序如下: x=0:0.1:10; y=10*x.*x; subplot(2,2,1);plot(x,y);title(plot(x,y);grid on; subplot(2,2,2);semilogx(x,y);title(semilogx

20、(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);grid on; 4. 對函數對函數 自適應采樣自適應采樣 的繪圖函數的繪圖函數fplot函數的調用格式為:函數的調用格式為: fplot(fname,lims,tol,選項選項)例例5.11 用用fplot函數繪制函數繪制f(x)=cos(tan(x)的的曲線。曲線。 先建立函數文件先建立函數文件myf.m: function y=myf(x) y=cos

21、(tan(pi*x); 再用再用fplot函數繪制函數繪制myf.m函數的曲線:函數的曲線: fplot(myf,-0.4,1.4,1e-4) 5. 其他形式的圖形其他形式的圖形MATLAB提供的繪圖函數還有很多,例如,用來表提供的繪圖函數還有很多,例如,用來表示各元素占總和的百分比的示各元素占總和的百分比的餅圖餅圖、復數的、復數的相量圖相量圖等等。等等。例例5.12 繪制圖形:繪制圖形:(1)某次考試優秀、良好、中等、及格、不及格的人數分別某次考試優秀、良好、中等、及格、不及格的人數分別為:為:7,17,23,19,5,試用餅圖作成績統計分析。,試用餅圖作成績統計分析。(2)繪制復數的相量圖

22、:繪制復數的相量圖:3+2i、4.5-i和和-1.5+5i。程序如下:程序如下:subplot(1,2,1);pie(7,17,23,19,5);title(餅圖餅圖);legend(優秀優秀,良好良好,中等中等,及格及格,不及格不及格);subplot(1,2,2);compass(3+2i,4.5-i,-1.5+5i);title(相量圖相量圖);根據需要查閱各種資料:幫助文檔、網上資料、有關書籍等!根據需要查閱各種資料:幫助文檔、網上資料、有關書籍等! 5.2 三維圖形三維圖形5.2.1 繪制 三維曲線 的基本函數 plot3函數與plot函數用法十分相似,其調用格式為: plot3(x

23、1,y1,z1,選項1,x2,y2,z2,選項2,xn,yn,zn,選項n) 程序如下:程序如下: t=0:pi/50:2*pi; x=8*cos(t); y=4*sqrt(2)*sin(t); z=-4*sqrt(2)*sin(t); plot3(x,y,z,p); title(Line in 3-D Space);text(0,0,0,origin); xlabel(X),ylabel(Y),zlabel(Z);grid;222640 xyzyz例例5.13 5.13 繪制空間曲線。繪制空間曲線。8cos4 2sin2sinxtyttt 0 2z=-4(x1,y1,z1), (x2,y2,

24、z2), ,(xi,yi,zi),t1, t2, , ti,(x1,y1,z1), (x2,y2,z2), ,(xi,yi,zi), 5.2.2 三維曲面三維曲面繪制繪制 z=f(x,y)=x+y 在在0 51 4 范圍的曲面。范圍的曲面。在xoy平面內找出繪圖區域24個點 (x,y),0,11,12,13,14,15,10,21,22,23,24,25,20,31,32,33,34,35,30,41,42,43,44,45,40,11,12,13,14,15,10,10,20,30,401234501234500.511.52xyz0,1,1 1,1,2 2,1,3 3,1,4 4,1,5

25、5,1,60,2,2 1,2,3 2,2,4 3,2,5 4,2,6 5,2,70,3,3 1,3,4 2,3,5 3,3,6 4,3,7 5,3,80,4,4 1,4,5 2,4,6 3,4,7 4,4,8 5,4,9計算上面24個點 (x,y)對應的 z,得到空間的點(x,y,z)繪制繪制 z =f(x,y) =x+y 在在0 51 4 范圍的曲面。范圍的曲面。0,1,1 1,1,2 2,1,3 3,1,4 4,1,5 5,1,60,2,2 1,2,3 2,2,4 3,2,5 4,2,6 5,2,70,3,3 1,3,4 2,3,5 3,3,6 4,3,7 5,3,80,4,4 1,4,5

26、 2,4,6 3,4,7 4,4,8 5,4,9曲面上的點(x,y,z)012345012345012345012345111111222222333333444444123456234567345678456789XYZX,Y:平面網格坐標矩陣平面網格坐標矩陣 投影到投影到xoyxoy面繪圖區域中的網格面繪圖區域中的網格點點D(i,j)D(i,j) 的坐標為:的坐標為:( X(i,j),Y(i,j) ),( X(i,j),Y(i,j) ),此點的縱此點的縱坐標為:坐標為:Z(i,j)=Z(i,j)=f f(X(i,j),Y(i,j)(X(i,j),Y(i,j)5.2.2 三維曲面三維曲面5.

27、2.2 三維曲面三維曲面繪制繪制 z =f(x,y) =x+y 在在0 51 4 范圍的曲面。范圍的曲面。0,1,1 1,1,2 2,1,3 3,1,4 4,1,5 5,1,60,2,2 1,2,3 2,2,4 3,2,5 4,2,6 5,2,70,3,3 1,3,4 2,3,5 3,3,6 4,3,7 5,3,80,4,4 1,4,5 2,4,6 3,4,7 4,4,8 5,4,9曲面上的點(x,y,z)012345012345012345012345111111222222333333444444123456234567345678456789XYZ1234012345xy01234511

28、1*()1()o n e ss iXz eyx 111111123()*)4o n e sysYiz ex 5.2.2 三維曲面三維曲面1平面網格平面網格 坐標矩陣坐標矩陣 的生成的生成(1)利用矩陣運算生成。利用矩陣運算生成。x=a:dx:b; y=(c:dy:d);X=ones(size(y)*x;Y=y*ones(size(x);(2)利用利用meshgrid函數生成。函數生成。x=a:dx:b; y=c:dy:d;X,Y=meshgrid(x,y); 繪制繪制 z=f(x,y)=x+y 在在 不規則網格不規則網格 范圍的曲面。范圍的曲面。在xoy平面內找出繪圖區域24個點 (x,y),

29、0123450123450246810zxy0123450123450246810 xyz0246024602468100.31861.136 2.0295 2.9273 3.8632 5.26360.2036 0.7607 1.6476 2.9792 3.9826 5.36490.2329 0.8185 1.6712 3.3272 4.0777 5.07640.2521.1011.8173.077 3.72924.6231.2497 0.9399 1.2709 1.2959 1.3614 0.75032.0881 1.9005 1.9613 2.21552.112 1.99253.1612

30、2.7329 3.3653 2.9553 2.7979 2.92743.6738 4.2665 3.7177 4.0965 3.8822 3.97081.5683 2.0759 3.3004 4.2232 5.2245 6.01392.2917 2.6612 3.6089 5.1948 6.0946 7.35743.3941 3.5514 5.0365 6.2825 6.8756 8.00393.9257 5.3675 5.5348 7.1735 7.6113 8.59385.2.2 三維曲面(補充)三維曲面(補充) 程序如下:程序如下:x=7:29; y=16:35;x,y=meshgrid

31、(x,y); %在在5,2914,35區域生成網格坐標區域生成網格坐標z=2*x+5*y;k=find(z=126); %找出解的位置找出解的位置 ,序號,不是下標序號,不是下標x(k),y(k) %輸出對應位置的輸出對應位置的x,y即方程的解即方程的解例例5.14 已知已知6x30,15y36,求不定方程,求不定方程2x+5y=126的的整數解整數解。51015202530152025303500.511.52zxy01020301520253035050100150200250 xyz繪制 z=f(x,y)=2x+5y 曲面 2. 繪制三維曲面的函數繪制三維曲面的函數 surf 函數和函數

32、和 mesh 函數的調用格式為:函數的調用格式為: mesh(x,y,z,c) surf(x,y,z,c)例例5.15 用三維曲面圖表現函數用三維曲面圖表現函數z=sin(y)cos(x)。 程序程序1: x=0:0.1:2*pi; x,y=meshgrid(x); z=sin(y).*cos(x); mesh(x,y,z); xlabel(x-axis),ylabel(y-axis),zlabel(z-axis);title(mesh);surf(x,y,z); 例例5.15 用三維曲面圖表現函數用三維曲面圖表現函數z=sin(y)cos(x)。程序程序2: x=0:0.1:2*pi;x,y

33、=meshgrid(x);z=sin(y).*cos(x); surf(x,y,z);xlabel(x-axis),ylabel(y-axis),zlabel(z-axis);title(surf); 程序程序3: x=0:0.1:2*pi;x,y=meshgrid(x);z=sin(y).*cos(x); plot3(x,y,z);xlabel(x-axis),ylabel(y-axis),zlabel(z-axis);title(plot3-1);grid; 例例5.16 繪制兩個直徑相等的圓管的相交圖形。繪制兩個直徑相等的圓管的相交圖形。cos( )sin( )xyrr程序如下程序如下:

34、m=30; % 圓 的 周邊 等分 份數 n=1; %圓筒節數 h=1.2;z= h *(0:n)/n; R=2;r= R *ones(size(z);theta=(0:m)/m*2*pi;x1=r*cos(theta);y1=r*sin(theta); %z1=z *ones(1,m+1);surf(x1,y1,z1); hold on;z2=z*ones(1,m+1) + 5;surf(x1,y1,z2);axis(-2,2,-2,2,0,10); 例例5.16 繪制兩個直徑相等的圓管的繪制兩個直徑相等的圓管的 相交圖形。相交圖形。程序如下程序如下:m=30;z=1.2*(0:m)/m;r

35、=ones(size(z);theta=(0:m)/m*2*pi;x1=r*cos(theta);y1=r*sin(theta); z1=z*ones(1,m+1); %生成第一個圓管的坐標矩陣生成第一個圓管的坐標矩陣x=(-m:2:m)/m;x2=x*ones(1,m+1);y2=r*cos(theta); %生成第二個圓管的坐標矩陣生成第二個圓管的坐標矩陣z2=r*sin(theta);surf(x1,y1,z1); %繪制豎立的圓管繪制豎立的圓管axis equal,axis offhold onsurf(x2,y2,z2); %繪制平放的圓管繪制平放的圓管axis equal,axis

36、 offtitle(兩個等直徑圓管的交線兩個等直徑圓管的交線);hold off思考:m=30; % 圓 的 周邊 等分 份數 n=2; %圓筒節數h=2;z=h*(0:n)/n; %各節等長 改成 z=0 3 8; r1=5;r2=1;r=linspace(r1,r2,n+1); %各節圓環半徑成等差數列 改成 r=5 2 4 ; theta=(0:m)/m*2*pi;x1=r*cos(theta);y1=r*sin(theta); z1=z*ones(1,m+1);surf(x1,y1,z1); 網格矩陣的作用網格矩陣的作用 例例5.17 分析由函數分析由函數z=x2-2y2構成的曲面形狀

37、及與平面構成的曲面形狀及與平面z=a的交線。的交線。 程序如下:程序如下: x,y=meshgrid(-10:0.2:10); z1=(x.2-2*y.2)+eps; %第第1個曲面個曲面 a=input(a=?); z2=a*ones(size(x); %第第2個曲面個曲面 subplot(1,2,1);mesh(x,y,z1);hold on;mesh(x,y,z2); %分別畫出兩個曲面分別畫出兩個曲面 v=-10,10,-10,10,-100,100;axis(v);grid; %第第1子圖的坐標設置子圖的坐標設置 hold off; r0=abs(z1-z2)0.5);x(i)=Na

38、N;plot(x,y); 例例5.24 繪制兩個繪制兩個球面球面,其中一個球在另一個球里面,將外,其中一個球在另一個球里面,將外面的球裁掉一部分,使得能看見里面的球。面的球裁掉一部分,使得能看見里面的球。程序如下程序如下:x,y,z=sphere(20);%生成外面的大球生成外面的大球z1=z;z1(:,1:4)=NaN; %將大球裁掉一部分將大球裁掉一部分c1=ones(size(z1);surf(3*x, 3*y, 3*z1, c1);%生成里面的小球生成里面的小球hold onz2=z;c2=2*ones(size(z2);c2(:,1:4)=3*ones(size(c2(:,1:4);

39、surf(1.5*x,1.5*y,1.5*z2,c2);colormap(0,1,0;0.5,0,0;1,0,0);grid onhold off 橢球?對球平移,伸縮?5.4 隱函數繪圖隱函數繪圖(不求出(不求出 線線 或或 面面 上系列點的坐標矩陣,上系列點的坐標矩陣,而直接用函數式子繪圖。不同于數學中的隱函數)而直接用函數式子繪圖。不同于數學中的隱函數)MATLAB提供了一個ezplot函數繪制隱函數圖形,下面介紹其用法。(1) 對于顯函數f = f(x),ezplot函數的調用格式為:ezplot(f):在默認區間-2x2繪制f = f(x)的圖形。ezplot(f, a,b):在區間

40、axb繪制f = f(x)的圖形。(2) 對于隱函數f = f(x,y),ezplot函數的調用格式為:ezplot(f):在默認區間-2x2和-2y2繪制f(x,y) = 0的圖形。ezplot(f, xmin,xmax,ymin,ymax):在區間xminxxmax和yminyymax繪制f(x,y) = 0的圖形。ezplot(f, a,b):在區間axb和ay b繪制f(x,y) = 0的圖形(3) 對于參數方程x = x(t)和y = y(t),ezplot函數的調用格式為:ezplot(x,y):在默認區間0t2繪制x=x(t)和y=y(t)的圖形。ezplot(x,y, tmin

41、,tmax):在區間tmin t tmax繪制x=x(t)和y=y(t)的圖形。例例5.25 隱函數繪圖應用舉例。隱函數繪圖應用舉例。程序如下:程序如下:subplot(2,2,1);ezplot( x2+y2-9 );axis equal % 圓圓subplot(2,2,2);ezplot(x3+y3-5*x*y+1/5)subplot(2,2,3);ezplot(cos(tan(pi*x), 0,1)subplot(2,2,4);ezplot(8*cos(t),4*sqrt(2)*sin(t),0,2*pi) % 橢圓橢圓橢圓,雙曲線,拋物線?其它隱函數繪圖函數:其它隱函數繪圖函數:ezp

42、olar、ezcontour、 ezcontourf、ezplot3 、ezmesh 、ezsurf 等等。等等。繪制半徑為 8 的 球面:ezsurf(sqrt(64-x2 - y2), -8,8,-8,8); hold on;ezsurf(-sqrt(64-x2 - y2), -8,8,-8,8); hold off; sin( )cos( )sin( )sin( )cos( ),2rabraxbraaybz 00ezsurf(8*sin(a)*cos(b), 8*sin(a)*sin(b), 8*cos(a) );ezmesh(8*sin(a)*cos(b), 8*sin(a)*sin(

43、b), 8*cos(a) ,0,pi/2, 0,2*pi );(x,y,z)-(r,a,b) 5.5 低層繪圖操作低層繪圖操作 計算機屏幕計算機屏幕(Screen) 、圖形窗口圖形窗口(Figure)、用戶菜單用戶菜單(Uimenu)、用戶控件用戶控件(Uicontrol)、坐標軸坐標軸(Axes)、曲線曲線(Line)、曲面曲面(Surface)、文字文字(Text)、圖像圖像(image)、光源光源(Light)、區域塊區域塊(Patch) 方框方框(Rectangle)。5.5.1 圖形對象及其句柄圖形對象及其句柄 1. 圖形對象圖形對象 MATLAB把構成圖形的各個基本要素稱為圖形對象

44、。把構成圖形的各個基本要素稱為圖形對象。 2. 圖形對象句柄圖形對象句柄 MATLAB在創建每一個圖形對象時,都為該對象在創建每一個圖形對象時,都為該對象分配唯一的一個值,稱其為圖形對象句柄分配唯一的一個值,稱其為圖形對象句柄(Handle)。句柄是圖形對象的唯一標識符。句柄是圖形對象的唯一標識符。 0正整數,如1,2,3,浮點數,如15.23, 2. 圖形對象句柄圖形對象句柄 MATLAB在創建每一個圖形對象時,都為該對象在創建每一個圖形對象時,都為該對象分配唯一的一個值,稱其為圖形對象句柄分配唯一的一個值,稱其為圖形對象句柄(Handle)。句柄是圖形對象的唯一標識符。句柄是圖形對象的唯一

45、標識符。 MATLAB提供了提供了3個用于獲取已有圖形對象句柄的函個用于獲取已有圖形對象句柄的函數:數: gcf 獲取獲取當前當前圖形窗口的句柄圖形窗口的句柄(get current figure)。 gca 獲取獲取當前當前坐標軸的句柄坐標軸的句柄(get current axis)。 gco 獲取獲取最近被單擊最近被單擊的圖形對象的句柄的圖形對象的句柄(get current object)。 5.5.2 圖形對象屬性圖形對象屬性 1. 屬性名與屬性值屬性名與屬性值 MATLAB給每種對象的每一個屬性規定了一個名給每種對象的每一個屬性規定了一個名字,稱為字,稱為屬性名屬性名,而屬性名的取值

46、成為,而屬性名的取值成為屬性值屬性值。例。例如,如,LineStyle是曲線對象的一個屬性名,它的值決是曲線對象的一個屬性名,它的值決定著線型,取值可以是定著線型,取值可以是- 、:、-.、-或或none。 2. 屬性的操作屬性的操作 set函數的調用格式為:函數的調用格式為: set(句柄,屬性名句柄,屬性名1,屬性值,屬性值1,屬性名,屬性名2,屬性值,屬性值2,) get函數的調用格式為:函數的調用格式為: V=get(句柄,屬性名句柄,屬性名) 3. 對象的公共屬性對象的公共屬性 圖形對象具有各種各樣的屬性,有些屬性是所有對象共同圖形對象具有各種各樣的屬性,有些屬性是所有對象共同具備的

47、,有些則是各對象所特有的。具備的,有些則是各對象所特有的。 例例5.26 在同一坐標下畫紅、綠兩根不同曲線,希望獲得綠色在同一坐標下畫紅、綠兩根不同曲線,希望獲得綠色曲線的句柄,并對其進行設置。曲線的句柄,并對其進行設置。程序如下程序如下:x=0:pi/50:2*pi;y=sin(x);z=cos(x);plot(x,y,r,x,z,g);H=get(gca,Children); %獲取兩曲線句柄向量獲取兩曲線句柄向量Hfor k=1:length(H) if get(H(k),Color)=0 1 0 %0 1 0代表綠色代表綠色 Hg=H(k); %獲取綠色線條句柄獲取綠色線條句柄 end

48、endpause %便于觀察設置效果便于觀察設置效果set(Hg,LineStyle,:,Marker,p); %對綠色曲線進行設置對綠色曲線進行設置 5.5.3 圖形對象的創建圖形對象的創建 1. 圖形窗口對象圖形窗口對象 建立建立圖形窗口對象使用圖形窗口對象使用figure函數。調用該函函數。調用該函數的命令形式為:數的命令形式為: 句柄變量句柄變量=figure(屬性名屬性名1,屬性值,屬性值1,屬性名,屬性名2,屬性值屬性值2,) MATLAB為每個圖形窗口提供了很多屬性。這些屬性及其取值控為每個圖形窗口提供了很多屬性。這些屬性及其取值控制著圖形窗口對象。除公共屬性外,其他常用屬性:制

49、著圖形窗口對象。除公共屬性外,其他常用屬性:MenuBar屬屬性、性、Name屬性、屬性、Position屬性、屬性、Color屬性等。屬性等。補: Handle Graphics 幫助文檔中相關的函數 clf(窗口句柄窗口句柄); % 清除清除當前繪圖窗口的內容當前繪圖窗口的內容 close(窗口句柄窗口句柄); % 關閉關閉當前繪圖窗口當前繪圖窗口 figure(窗口句柄窗口句柄) ; % 設置設置當前繪圖窗口當前繪圖窗口 例例5.27 建立一個圖形窗口。該圖形窗口沒有菜單建立一個圖形窗口。該圖形窗口沒有菜單條,標題名稱為條,標題名稱為“圖形窗口示例圖形窗口示例”,起始于屏幕,起始于屏幕左

50、下角、寬度和高度分別為左下角、寬度和高度分別為300像素點和像素點和150像素像素點,背景顏色為綠色,且當用戶從鍵盤按下任意點,背景顏色為綠色,且當用戶從鍵盤按下任意一個鍵時,將顯示一個鍵時,將顯示“Hello,Keyboard Key Pressed.”字樣。字樣。 命令如下:命令如下: hf=figure(Color,0,1,0,Position,1,1,300,150,. Name,圖形窗口示例圖形窗口示例,NumberTitle,off,MenuBar,none,. KeyPressFcn,disp(Hello,Keyboard Key Pressed.); 例例5.28 分別在分別在

51、4個不同的圖形窗口繪制出正弦、余弦、正切、個不同的圖形窗口繪制出正弦、余弦、正切、余切曲線。要求先建立一個圖形窗口并繪圖,然后每關閉一個余切曲線。要求先建立一個圖形窗口并繪圖,然后每關閉一個再建立下一個,直到建立第再建立下一個,直到建立第4個窗口并繪圖。個窗口并繪圖。程序如下:程序如下: x=linspace(0,2*pi,60); y=sin(x);z=cos(x);t=tan(x);ct=1./(t+eps); %命令組待用命令組待用 C4=figure(Name,cotangent(x),NumberTitle,. off);plot(x,ct);axis(0,2*pi,-40,40);

52、 C3=figure(Name,tangent(x),DeleteFcn,C4,. NumberTitle,off);plot(x,t);axis(0,2*pi,-40,40); C2=figure(Name,cos(x),DeleteFcn,C3,. NumberTitle,off);plot(x,z);axis(0,2*pi,-1,1); %先創建先創建1個圖形窗口并繪制曲線個圖形窗口并繪制曲線 figure(Name,sin(x),DeleteFcn,C2,NumberTitle,off); plot(x,y);axis(0,2*pi,-1,1); 2. 坐標軸對象坐標軸對象建立建立坐標

53、軸對象使用坐標軸對象使用axes函數,調用它的命令形式為:函數,調用它的命令形式為: 句柄變量句柄變量=axes(屬性名屬性名1,屬性,屬性值值1,屬性,屬性名名2,屬性值,屬性值2,)MATLAB為每個坐標軸對象提供了很多屬性。除公共屬性外,為每個坐標軸對象提供了很多屬性。除公共屬性外,還有其他常用屬性。還有其他常用屬性。補:cla(坐標軸句柄坐標軸句柄); 清除坐標軸對象中的圖形(子對象)delete( 任何圖形對象句柄句柄); 刪除圖形對象對象(包括其中的子對象)axes(坐標軸坐標軸句柄句柄); %設置設置當前當前坐標軸 例例5.29 利用坐標軸對象實現圖形窗口的任意分割。利用坐標軸對

54、象實現圖形窗口的任意分割。 程序如下:程序如下: clf; %清圖形窗口 x=linspace(0,2*pi,20);y=sin(x); axes(Posi,0.2,0.2,0.2,0.7); plot(y,x);title(sin(x)-1); axes(Posi,0.4,0.5,0.2,0.1); stairs(x,y);title(sin(x)-2); axes(Posi,0.55,0.6,0.25,0.3); stem(x,y); title(sin(x)-3); axes(Posi,0.55,0.2,0.25,0.3); stem(x,y); title(sin(x)-4); 3.

55、曲線對象 建立曲線對象使用line函數,調用它的命令形式為: 句柄變量=line(x,y,z,屬性名1,屬性值1,屬性名2,屬性值2,) 其中對x,y,z的解釋與高層曲線函數plot和plot3等一樣,其余的解釋與前面介紹過的figure和axes函數類似。每個曲線對象也具有很多屬性。例例5.30 利用曲線對象繪制曲線。利用曲線對象繪制曲線。程序如下:程序如下:t=0:pi/100:pi/2;y1=sin(2*pi*t);y2=sqrt(3)/2*exp(-4*t).*sin(4*sqrt(3)*t+pi/3);figh=figure;axes(GridLineStyle,:,XLim,0,p

56、i/2,YLim,-1,1);line(XData,t,YData,y1,LineWidth,1);line(t,y2);grid on delete(曲線句柄) 4. 文字對象文字對象 使用使用text函數可以根據指定位置和屬性值添函數可以根據指定位置和屬性值添加文字說明,并保存句柄。調用該函數的命加文字說明,并保存句柄。調用該函數的命令形式為:令形式為: 句柄變量句柄變量=text(x,y,z,說明文字說明文字,屬性屬性名名1,屬性,屬性值值1,屬性名,屬性名2,屬性值,屬性值2,) 其中說明文字中除使用標準的其中說明文字中除使用標準的ASCII字符外,字符外,還可使用還可使用LATEX格

57、式的控制字符。格式的控制字符。 除公共屬性外,文字對象還有其他常用屬性。除公共屬性外,文字對象還有其他常用屬性。 例例5.31 利用曲線對象繪制曲線和并利用文字對象完成標利用曲線對象繪制曲線和并利用文字對象完成標注。注。程序如下:程序如下:theta=-pi:.1:pi;y1=sin(theta);y2=cos(theta);h=line(theta,y1,LineStyle,:,Color,g);line(theta,y2,LineStyle,-,Color,b);xlabel(-pi leq theta leq pi)ylabel(sin(theta)title(Plot of sin(t

58、heta)text(-pi/4,sin(-pi/4),leftarrow sin(-pidiv4),FontSize,12)set(h,Color,r,LineWidth,2) %改變曲線改變曲線1的顏色和的顏色和線寬線寬 5. 曲面對象曲面對象 建立曲面對象使用建立曲面對象使用surface函數,調用它的命令形函數,調用它的命令形式為:式為: 句柄變量句柄變量=surface(x,y,z,屬性名屬性名1,屬性值,屬性值1,屬性,屬性名名2,屬性,屬性值值2,) 其中對其中對x,y,z的解釋與高層曲面函數的解釋與高層曲面函數mesh和和surf等等一樣,其余的解釋與前面介紹過的一樣,其余的解釋

59、與前面介紹過的figure和和axes等等函數類似。函數類似。 每個曲面對象也具有很多屬性。除公共屬性外,每個曲面對象也具有很多屬性。除公共屬性外,還有其他常用屬性。還有其他常用屬性。 例例5.32 利用曲面對象繪制三維曲面利用曲面對象繪制三維曲面z=sin(y)cos(x)。程序如下:程序如下: x=0:0.1:2*pi;x,y=meshgrid(x);z=sin(y).*cos(x);axes(view,-37.5,30);hs=surface(x,y,z,FaceColor,w,EdgeColor,flat); grid on; xlabel(x-axis),ylabel(y-axis)

60、,zlabel(z-axis); title(mesh-surf); pause;set(hs,FaceColor,flat); 6區域塊對象區域塊對象 區域塊對象是指一個區域塊對象是指一個任意多邊形區域任意多邊形區域。在。在MATLAB中,可以使用中,可以使用patch函數創建一個或多函數創建一個或多個多邊形。有兩種形式的個多邊形。有兩種形式的patch函數,一種是高級函數,一種是高級語法形式,另一種是低級語法形式。前者通過指語法形式,另一種是低級語法形式。前者通過指定每個小面的頂點坐標和顏色來創建區域塊對象,定每個小面的頂點坐標和顏色來創建區域塊對象,后者通過指定所有頂點的坐標和各小面的頂點和后者通過指定所有頂

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論