第3章繪圖與可視化_第1頁
第3章繪圖與可視化_第2頁
第3章繪圖與可視化_第3頁
第3章繪圖與可視化_第4頁
第3章繪圖與可視化_第5頁
已閱讀5頁,還剩114頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10MATLAB繪圖與可視化天 津 科 技 大 學 數 學 系 謝中華E-mail: MATLAB從零到進階從零到進階MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10MATLAB設有大量函數和命令來繪制出各種各樣的圖形,具設有大量函數和命令來繪制出各種各樣的圖形,具有強大的繪圖功能有強大的繪圖功能MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 20

2、22-6-10主要內容主要內容 圖形對象與圖形句柄圖形對象與圖形句柄 二維圖形繪制二維圖形繪制 三維圖形繪制三維圖形繪制 圖形的打印和輸出圖形的打印和輸出 動畫制作動畫制作MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10第一節第一節 圖形對象與圖形對象句柄圖形對象與圖形對象句柄MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10一、什么是圖形對象與圖形句柄一、什么是圖形對象與圖形句柄 圖形窗口、線條、曲面和注釋等都被看作是圖形窗口、線條、曲面和注釋等都被看作是MATLAB中中的圖形對象的圖形對象,所有這些圖形對

3、象都可以通過一個被稱為,所有這些圖形對象都可以通過一個被稱為“句句柄值柄值”的東西加以控制,例如可以通過一個線條的句柄值來的東西加以控制,例如可以通過一個線條的句柄值來修改線條的顏色、寬度和線型等屬性。修改線條的顏色、寬度和線型等屬性。這里所謂的這里所謂的“句柄值句柄值”其實就是一個數值,每個圖形對象都對應一個唯一的句柄值,其實就是一個數值,每個圖形對象都對應一個唯一的句柄值,它就像一個指針,與圖形對象一一對應它就像一個指針,與圖形對象一一對應。例如可以通過命令。例如可以通過命令h = figure返回一個圖形窗口的句柄值。返回一個圖形窗口的句柄值。MATLAB繪圖繪圖 謝中華謝中華, MAT

4、LAB從零到進階從零到進階. 2022-6-10句柄式圖形對象繼承關系圖句柄式圖形對象繼承關系圖Parent(父)(父)Children(子)(子)MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10二、獲取圖形對象屬性名稱和屬性值二、獲取圖形對象屬性名稱和屬性值 h = line(0 1,0 1)h = 0.0149 get(h)MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10三、設置圖形對象屬性值三、設置圖形對象屬性值 subplot(1, 2, 1); h1 = line(0 1,0 1) ; text(

5、0, 0.5, 未改變線寬未改變線寬) ; subplot(1, 2, 2); h2 = line(0 1,0 1) ; set(h2, LineWidth, 3) text(0, 0.5, 已改變線寬已改變線寬) ; MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10第二節第二節 二維圖形繪制二維圖形繪制MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10一、基本二維繪圖函數一、基本二維繪圖函數 MATLAB 中提供了中提供了plot,loglog,semilogx,semilogy,polar,plotyy

6、等等6個非常實用的基本二維繪圖函數,下面重個非常實用的基本二維繪圖函數,下面重點介紹點介紹plot函數的用法函數的用法MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-101. plot函數函數plot(Y)plot(X,Y)plot(X1,Y1, X2,Y2,.)plot(X1,Y1,LineSpec,.)plot(.,PropertyName,PropertyValue,.)plot(axes_handle,.)h = plot(.)hlines = plot(v6,.) 調用格式:調用格式:MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階

7、從零到進階. 2022-6-10【例例3.2-0】給定橫縱坐標數據,繪制線圖給定橫縱坐標數據,繪制線圖xy123577.586.5775.5468102 x=1 1.5 2 3 5 7 7.5 8 10; y=2 5 6.5 7 7 5.5 4 6 8; plot(x,y)1.55123456789102345678MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10【例例3.2-1】同時繪制多條線同時繪制多條線 x=3,5,9;3,10,67;3,23,90;x = 3 5 9 3 10 67 3 23 90 plot(x)11.21.41.61.82

8、2.22.42.62.830102030405060708090第一列第二列第三列MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10 x1=linspace(0,2*pi,100); x2=linspace(0,3*pi,100); x3=linspace(0,4*pi,100); y1=sin(x1); y2=1+sin(x2); y3=2+sin(x3); x=x1;x2;x3; y=y1;y2;y3; plot(x,y,x1,y1-1,r-*)02468101214-2-1.5-1-0.500.511.522.53x1,y1-1x,y三列三列MA

9、TLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10線型、描點類型、顏色參數表線型、描點類型、顏色參數表 線條屬性的修改線條屬性的修改色彩色彩字符字符說明說明線型線型字符字符說明說明描點描點類型類型說明說明描點描點類型類型說明說明r紅紅-實線(默認)實線(默認).點點右三角形右三角形MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10【例例3.2-2】畫標準正態分布的密度函數圖像。畫標準正態分布的密度函數圖像。 x = -3 : 0.25 : 3; y = normpdf(x, 0, 1); plot(x, y, -r

10、o,. LineWidth,2,. MarkerEdgeColor,k,. MarkerFaceColor,0.49, 1, 0.63,. MarkerSize,12) xlabel(X); ylabel(Y); MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10-3-2-1012300.050.10.150.20.250.30.350.4XYMATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-102. loglog函數:雙對數坐標繪圖函數:雙對數坐標繪圖 x = logspace(-1,2); loglog(x,e

11、xp(x),-s) grid on% 為為X軸,軸,Y軸加標簽軸加標簽 xlabel(X); ylabel(Y); MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-103. semilogx,semilogy函數:半對數坐標繪圖函數:半對數坐標繪圖 x = 0 : 0.1 : 10; semilogy(x, 10.x) xlabel(X); ylabel(Y);MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-104. polar函數:極坐標繪圖函數:極坐標繪圖 t = 0 : 0.01 : 2*pi; polar(

12、t, sin(2*t).*cos(2*t),-r)MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-105. plotyy函數:雙縱坐標繪圖函數:雙縱坐標繪圖 x = 0:0.01:20; y1 = 200*exp(-0.05*x).*sin(x); y2 = 0.8*exp(-0.5*x).*sin(10*x); ax = plotyy(x,y1,x,y2,plot); xlabel(X); set(get(ax(1),Ylabel),string,Left Y); set(get(ax(2),Ylabel),string,Right Y); MATLA

13、B繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10雙縱坐標繪圖雙縱坐標繪圖MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10二、二維圖形修飾和添加注釋二、二維圖形修飾和添加注釋 可以通過可以通過MATLAB命令對圖形進行修飾和添加注釋,也命令對圖形進行修飾和添加注釋,也可以通過圖形窗口的菜單項和工具欄完成這些工作。后者通可以通過圖形窗口的菜單項和工具欄完成這些工作。后者通過鼠標點擊操作,相對比較簡單,下面僅對相關命令進行介過鼠標點擊操作,相對比較簡單,下面僅對相關命令進行介紹紹MATLAB繪圖繪圖 謝中華謝中華, MAT

14、LAB從零到進階從零到進階. 2022-6-1081012141618202224020040060080010001200DISTANCE (cm)INTENSITY (lux)Light Intensity as a Function of DistanceComparison between theory and experiment.TheoryExperimentPlot titley axislabelx axislabelTextTick-mark label二維繪圖的圖例標注說明二維繪圖的圖例標注說明Data symbolLegendTick-markMATLAB繪圖繪圖 謝中

15、華謝中華, MATLAB從零到進階從零到進階. 2022-6-10 hold 函數:開啟和關閉圖形窗口的圖形保持功能函數:開啟和關閉圖形窗口的圖形保持功能 axis 函數:設置坐標系的刻度和顯示方式函數:設置坐標系的刻度和顯示方式 grid 函數:為當前坐標系添加網格函數:為當前坐標系添加網格 title 函數:為當前坐標系添加標題函數:為當前坐標系添加標題 xlabel和和ylabel 函數:為當前坐標軸添加標簽函數:為當前坐標軸添加標簽 text函數:在當前坐標系中添加文本對象(函數:在當前坐標系中添加文本對象(text對象)對象) gtext函數:在當前坐標系中交互式添加文本對象函數:在

16、當前坐標系中交互式添加文本對象 legend函數:在當前坐標系中添加函數:在當前坐標系中添加line對象和對象和patch對象的對象的圖形標注框圖形標注框 annotation函數:在當前圖形窗口建立注釋對象函數:在當前圖形窗口建立注釋對象(annotation對象)對象)MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10 P = 3 1; 1 4; r = 5; V, D = eig(P); a = sqrt(r/D(1); b = sqrt(r/D(4); t = linspace(0, 2*pi, 60); xy = V*a*cos(t); b*

17、sin(t); plot(xy(1,:),xy(2,:), k, linewidth, 3); h = annotation(textarrow,0.606 0.65,0.55 0.65);【例例3.2-3】根據橢圓方程根據橢圓方程 繪制橢圓曲線,繪制橢圓曲線,并修飾圖形。并修飾圖形。31514xxyyMATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10 set(h, string,3x2+2xy+4y2 = 5, fontsize, 15); h = title(這是一個橢圓曲線這是一個橢圓曲線, fontsize, 18, fontweight, b

18、old); set(h, position, -0.00345622 1.35769 1.00011); axis(-1.5 1.5 -1.2 1.7); xlabel(X); ylabel(Y); MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10 a = -19.6749 22.2118 5.0905; fun = (a,x)a(1)+a(2)/2*(x-0.17).2+a(3)/4*(x-0.17).4; x = 0:0.01:1; y = fun(a, x); plot(x,y); xlabel(X); ylabel(Y = f(X); tex

19、t(Interpreter,latex,.String,$-19.6749+frac22.21182(x-0.17)2. +frac5.09054(x-0.17)4$,Position,0.05, -12,.FontSize,12);【例例3.2-4】繪制曲線繪制曲線并添加曲線方程。并添加曲線方程。2422.21185.090519.6749(0.17)(0.17)24xxMATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10三、常用統計繪圖函數三、常用統計繪圖函數

20、常用統計繪圖函數列表常用統計繪圖函數列表MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10 x = normrnd(0, 1, 1000, 1); hist(x, 20); xlabel(樣本數據樣本數據); ylabel(頻數頻數) ; figure; cdfplot(x); 【例例3.2-6】用用normrnd函數產生函數產生1000個標準正態分布隨機數,并個標準正態分布隨機數,并做出頻數直方圖和經驗分布函數圖。做出頻數直方圖和經驗分布函數圖。MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10頻數直方圖頻數

21、直方圖經驗分布函數圖經驗分布函數圖MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10四、特殊二維繪圖函數四、特殊二維繪圖函數特殊二維繪圖函數列表特殊二維繪圖函數列表MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10 subplot(3, 3, 1); f = (x)200*sin(x)./x; fplot(f, -20 20); title(y = 200*sin(x)/x); subplot(3, 3, 2); ezplot(x2 + y2 = 1, -1.1 1.1); axis equal; title(

22、單位圓單位圓); subplot(3, 3, 3); ezpolar(1+cos(t); title(心形圖心形圖); subplot(3, 3, 4); x = 10 10 20 25 35; 【例例3.2-7】特殊二維圖形。特殊二維圖形。MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10 name = 趙趙, 錢錢, 孫孫, 李李, 謝謝; explode = 0 0 0 0 1; pie(x, explode, name) title(餅圖餅圖); subplot(3, 3, 5); stairs(-2*pi:0.5:2*pi,sin(-2*pi

23、:0.5:2*pi); title(樓梯圖樓梯圖); subplot(3, 3, 6); stem(-2*pi:0.5:2*pi,sin(-2*pi:0.5:2*pi); title(火柴桿圖火柴桿圖); subplot(3, 3, 7); Z = eig(randn(20,20); compass(Z); title(羅盤圖羅盤圖);MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10 subplot(3, 3, 8); theta = (-90:10:90)*pi/180; r = 2*ones(size(theta); u,v = pol2cart

24、(theta,r); feather(u,v); title(羽毛圖羽毛圖); subplot(3, 3, 9); t = (1/16:1/8:1)*2*pi; fill(sin(t), cos(t),r); axis square; title(八邊形八邊形);MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10第三節第三節 三維圖形繪制三維圖形繪制MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10一、常用三維繪圖函數一

25、、常用三維繪圖函數MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10 t = linspace(0, 10*pi, 300); plot3(20*sin(t), 20*cos(t), t, r, linewidth, 2); hold on %圖形保持圖形保持 quiver3(0,0,0,1,0,0,25,k,filled,LineWidth,2); quiver3(0,0,0,0,1,0,25,k,filled,LineWidth,2); quiver3(0,0,0,0,0,1,40,k,filled,LineWidth,2); grid on xl

26、abel(X); ylabel(Y); zlabel(Z); axis(-25 25 -25 25 0 40); view(-210,30); 【例例3.3-1】用用plot3函數繪制三維螺旋線。函數繪制三維螺旋線。MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10 x,y = meshgrid(1:4, 2:5)x = 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4y = 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 5 plot(x, y, r,x, y, r, x, y, k.,markersize,18); axi

27、s(0 5 1 6); xlabel(X); ylabel(Y); 【例例3.3-2】用用meshgrid函數生成網格矩陣,并用函數生成網格矩陣,并用plot函數畫出平函數畫出平面網格圖形。面網格圖形。MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10 X,Y = meshgrid(-2:.2:2); Z = X.*exp(-X.2 - Y.2); DX,DY = gradient(Z,0.2,0.2); contour(X,Y,Z) ; hold on ; quiver(X,Y,DX,DY) ; h = get(gca,Children); set(

28、h, Color,k); 【例例3.3-3】繪制三維曲面繪制三維曲面 的等高線圖和梯度場。的等高線圖和梯度場。22()xyzxeMATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10 x = linspace(-3,3,20); y = linspace(-9,9,20); X, Y = meshgrid(x,y); Z = mvnpdf(X(:) Y(:), 0 0, 1 2;2 9); Z = reshape(Z, size(X); subplot(2, 2, 1); mesh(X, Y, Z); title(mesh); 【例例3.3-4】用用mes

29、h,surf,surfl,surfc函數繪制二元正態分布函數繪制二元正態分布的密度函數圖。的密度函數圖。MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10 subplot(2, 2, 2); surf(X, Y, Z); alpha(0.5); title(surf); subplot(2, 2, 3); surfl(X, Y, Z); title(surfl); subplot(2, 2, 4); surfc(X, Y, Z); title(surfc);MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10MA

30、TLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10 x,y=meshgrid(0:0.25:4*pi); z=sin(x+sin(y)-x/10; mesh(x,y,z); axis(0 4*pi 0 4*pi -2.5 1);【例例3.3-5】繪制三維曲面圖繪制三維曲面圖z=sin(x+sin(y)-x/10。05100510-2.5-2-1.5-1-0.500.51MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10% 繪制圓柱面繪制圓柱面 subplot(2,2,1); x,y,z = cylinder; su

31、rf(x,y,z); % 繪制啞鈴面繪制啞鈴面 subplot(2,2,2); t = 0:pi/10:2*pi; X,Y,Z = cylinder(2+cos(t); surf(X,Y,Z);【例例3.3-6】調用函數繪制柱面,球面,橢球面。調用函數繪制柱面,球面,橢球面。MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10% 繪制球面,半徑為繪制球面,半徑為10,球心,球心 (1,1,1) subplot(2,2,3); x,y,z = sphere; surf(10*x+1,10*y+1,10*z+1); axis equal;% 繪制橢球面繪制橢

32、球面 subplot(2,2,4); a=4; b=3; t = -b:b/10:b; x,y,z = cylinder(a*sqrt(1-t.2/b2),30); surf(x,y,z); MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10-101-10100.51-505-50500.51-50510-50510-50510-505-50500.51MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10% 餅圖餅圖 subplot(2,3,1); pie3(2347,1827,2043,3025); title

33、(三維餅圖三維餅圖); % 柱狀圖柱狀圖 subplot(2,3,2); bar3(magic(4); title(三維柱狀圖三維柱狀圖); 【例例3.3-7】繪制三維餅圖、三維柱狀圖、三維火柴桿圖、三維填繪制三維餅圖、三維柱狀圖、三維火柴桿圖、三維填充圖、三維向量場圖和立體切片圖(四維圖)充圖、三維向量場圖和立體切片圖(四維圖).MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10% 火柴桿圖火柴桿圖 subplot(2,3,3); y=2*sin(0:pi/10:2*pi); stem3(y); title(三維火柴桿圖三維火柴桿圖); % 填充圖填

34、充圖 subplot(2,3,4); fill3(rand(3,5),rand(3,5),rand(3,5), y ); title(三維填充圖三維填充圖); MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10% 三維向量場圖三維向量場圖 subplot(2,3,5); X,Y = meshgrid(0:0.25:4,-2:0.25:2); Z = sin(X).*cos(Y); Nx,Ny,Nz = surfnorm(X,Y,Z); surf(X,Y,Z); hold on; quiver3(X,Y,Z,Nx,Ny,Nz,0.5); title(三維

35、向量場圖三維向量場圖); axis(0 4 -2 2 -1 1); MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10% 立體切片圖(四維圖)立體切片圖(四維圖) subplot(2,3,6); t = linspace(-2,2,20); X,Y,Z = meshgrid(t,t,t); V = X.*exp(-X.2-Y.2-Z.2); xslice = -1.2,.8,2; yslice = 2; zslice = -2,0; slice(X,Y,Z,V,xslice,yslice,zslice); title(立體切片圖(四維圖)立體切片圖(四

36、維圖)); MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10 ezsurf(u*sin(v),u*cos(v), u,-2*pi,2*pi,-2*pi,2*pi)【例例3.3-8】調用調用ezsurf函數繪制圓錐面函數繪制圓錐面sincosxuvyuvzuMATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10 ezsurf(u*sin(v),u*cos(v), 4*v,-2*pi,2*pi,-2*pi,2*pi)【例例3.

37、3-9】調用調用ezsurf函數繪制螺面函數繪制螺面sincos4xuvyuvzvMATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10 ezmesh(3*cos(u)*sin(v),2*cos(u)*cos(v),sin(u),-2*pi,2*pi,-2*pi,2*pi)【例例3.3-10】調用調用ezsurf函數繪制橢球面函數繪制橢球面3cos sin2cos cossinxuvyuvzuMATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10二、三維圖形的修飾和添加注釋二、三維圖形的修飾和添加注釋1. 繪圖色彩的調

38、整繪圖色彩的調整colormap 函數函數 colormap(map),設置,設置map為當前顏色映像矩陣為當前顏色映像矩陣 colormap(default),恢復當前顏色映像矩陣為默認值,恢復當前顏色映像矩陣為默認值 cmap = colormap,獲取當前顏色映像矩陣,獲取當前顏色映像矩陣 colormap(ax,),設置當前,設置當前axes對象的顏色映像矩陣對象的顏色映像矩陣 MATLAB中提供了中提供了colormap函數,可以根據顏色映像矩函數,可以根據顏色映像矩陣對圖形對象的色彩進行調整。所謂的顏色映像矩陣就是一陣對圖形對象的色彩進行調整。所謂的顏色映像矩陣就是一個個 的矩陣,

39、的矩陣,k行表示有行表示有k種顏色,每行種顏色,每行3個元素分別代表個元素分別代表紅、綠、藍三元色的灰度值,取值均在紅、綠、藍三元色的灰度值,取值均在0,1之間。之間。3kmap的設置有兩種,可以人為指定一個元素值均在的設置有兩種,可以人為指定一個元素值均在0,1之間的之間的 的矩陣,也可以用的矩陣,也可以用MATLAB自帶的自帶的17種顏色映像矩陣。在種顏色映像矩陣。在MATLAB命令窗口分別運行命令窗口分別運行autumn、bone、colorcube、cool、copper、flag、gray、hot、hsv、jet、lines、pink、prism、spring、summer、whit

40、e和和winter函數,就可得到這函數,就可得到這17種顏色映種顏色映像矩陣像矩陣MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-102. 著色方式調整著色方式調整shading 函數函數 shading flat,平面著色,同一個小網格面和相應的線段,平面著色,同一個小網格面和相應的線段用同一種顏色著色。用同一種顏色著色。 shading faceted,類似于,類似于shading flat,平面著色,只是,平面著色,只是網格線都用黑色,這是默認著色方式。網格線都用黑色,這是默認著色方式。 shading interp,通過顏色插值方式著色。,通過顏

41、色插值方式著色。 shading(axes_handle,),為句柄值為,為句柄值為axes_handle的坐的坐標系內的圖形對象設置著色方式。標系內的圖形對象設置著色方式。MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-103. 透明度調整透明度調整 利用利用alpha函數函數調整透明度調整透明度 調用:調用:alpha(alpha_data) 說明:說明:alpha_data是一個介于是一個介于0和和1之間的數,之間的數,alpha_data = 0表示完全透明,表示完全透明,alpha_data = 1表示完全不透表示完全不透明,明,alpha_d

42、ata 的值越接近于的值越接近于0,透明度越高,透明度越高 通過圖形對象的通過圖形對象的“FaceAlpha”屬性調整透明度屬性調整透明度 調用:調用:set(h,FaceAlpha,0.25); 說明:說明:h為圖形對象句柄,為圖形對象句柄,0.25是是“FaceAlpha”屬性的屬屬性的屬性值,由用戶隨意指定。性值,由用戶隨意指定。MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10 figure; X,Y,Z = sphere; surf(X,Y,Z); colormap(lines); shading interp hold on; mesh(2

43、*X,2*Y,2*Z) hidden off axis equal axis off figure; surf(X,Y,Z,FaceColor,r); hold on; surf(2*X,2*Y,2*Z,FaceAlpha,0.4); axis equal axis off【例例3.3-11】三維圖形的透視效果三維圖形的透視效果MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-104. 光源設置與屬性調整光源設置與屬性調整 light函數函數 light(Prope

44、rtyName,propertyvalue,) 建立一個光源,并設置光源屬性(建立一個光源,并設置光源屬性(Position、Color和和Style)Position是位置屬性,設置光源位置,其屬性值為是位置屬性,設置光源位置,其屬性值為三個元素的向量三個元素的向量x, y, z,即光源的三維坐標;,即光源的三維坐標;Color是顏是顏色屬性,設置光源顏色,其屬性值可以是代表顏色的字符色屬性,設置光源顏色,其屬性值可以是代表顏色的字符(如表(如表3.2-1所列),也可以是由紅、綠、藍三元色的灰度所列),也可以是由紅、綠、藍三元色的灰度值組成的向量;值組成的向量;Style是光源類型屬性,設置

45、光源類型,其是光源類型屬性,設置光源類型,其取值為字符串取值為字符串 infinite 或或 local,分別表示平行光源和點,分別表示平行光源和點光源。光源。MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10 handle = light() 建立一個光源,并獲取其句柄值建立一個光源,并獲取其句柄值handle,之后可以通過,之后可以通過get(handle)查看光源的所有屬性,也可以通過查看光源的所有屬性,也可以通過set(handle, PropertyName,propertyvalue,)設置光源的屬性值。設置光源的屬性值。MATLAB繪圖繪

46、圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-105. 調整光照模式調整光照模式 lighting函數函數 lighting flat,產生均勻光照,選擇此方法,以查看面對,產生均勻光照,選擇此方法,以查看面對象,是光照模式的默認設置。象,是光照模式的默認設置。 lighting gouraud,計算頂點法線并作線性插值修改表面,計算頂點法線并作線性插值修改表面顏色,選擇此方法,以查看曲面對象。顏色,選擇此方法,以查看曲面對象。 lighting phong,做線性插值并計算每個像素的反射率來,做線性插值并計算每個像素的反射率來修改表面顏色,選擇此方法,以查看曲面對象。

47、此方法比修改表面顏色,選擇此方法,以查看曲面對象。此方法比lighting gouraud的效果好,但是用于渲染的時間較長。的效果好,但是用于渲染的時間較長。 lighting none,關掉照明。,關掉照明。MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-106. 圖形表面對光照反射屬性設置圖形表面對光照反射屬性設置 material函數函數 material shiny,使圖形對象有相對較高的鏡面反射,鏡使圖形對象有相對較高的鏡面反射,鏡面光的顏色僅取決于光源顏色。面光的顏色僅取決于光源顏色。 material dull,使圖形對象有更多的漫反射,反

48、射光的使圖形對象有更多的漫反射,反射光的顏色僅取決于光源顏色。顏色僅取決于光源顏色。 material metal,使圖形對象有非常高的鏡面反射和非常使圖形對象有非常高的鏡面反射和非常低的環境光及漫反射,反射光的顏色取決于光源顏色和圖低的環境光及漫反射,反射光的顏色取決于光源顏色和圖形表面的顏色。形表面的顏色。MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10 material(ka kd ks) material(ka kd ks n) material(ka kd ks n sc),用用ka、kd和和ks分別設置圖形分別設置圖形對象的環境光、漫反射

49、和鏡面反射的強度,用鏡面指數對象的環境光、漫反射和鏡面反射的強度,用鏡面指數n控控制鏡面亮點的大小,用制鏡面亮點的大小,用sc設置鏡面顏色的反射系數。設置鏡面顏色的反射系數。ka、kd、ks、n和和sc均為標量,均為標量,sc的取值介于的取值介于0和和1之間。之間。 material default,恢復恢復ka、kd、ks、n和和sc的默認值。的默認值。MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-107. 調整視點位置調整視點位置 view函數函數 view(az,el),設置三維繪圖的視角,設置三維繪圖的視角, az是方位角,是方位角,el表示表

50、示相對于相對于xoy平面的仰角,。平面的仰角,。zyx-y視點az方位角el仰角MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10 view(x,y,z),設置視點的三維直角坐標,設置視點的三維直角坐標x, y, z. view(2),設置默認的二維視角,設置默認的二維視角,az = 0, el = 90. view(3),設置默認的三維視角,設置默認的三維視角,az = -37.5, el = 30. view(ax,),設置句柄值為,設置句柄值為ax的坐標系的視角。的坐標系的視角。 view(T),用,用viewmtx函數生成的函數生成的 的視角轉

51、換矩陣作的視角轉換矩陣作為輸入來設置視角。為輸入來設置視角。 az,el = view,返回當前方向角和仰角。,返回當前方向角和仰角。 T = view,返回一個,返回一個 的視角轉換矩陣。的視角轉換矩陣。4 44 4MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10 t=0:pi/20:2*pi; x,y,z= cylinder(2+sin(t),100); surf(x,y,z); xlabel(X); ylabel(Y); zlabel(Z); set(gca,color,none); shading interp; colormap(coppe

52、r); light(Posi,-4 -1 0); lighting phong; material metal; hold on; plot3(-4,-1,0,p,markersize, 18); text(-4,-1,0,光源光源,fontsize,14,fontweight,bold); 【例例3.3-12】繪制帶光照的花瓶。繪制帶光照的花瓶。MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10 vert = 0 0 0;0 200 0;200 200 0;2

53、00 0 0;0 0 100;0 200 100;200 200 100;200 0 100; fac = 1 2 3 4;2 6 7 3;4 3 7 8;1 5 8 4;1 2 6 5;5 6 7 8; view(3); h = patch(faces,fac,vertices,vert,FaceColor,g); set(h,FaceAlpha,0.25); hold on; x0,y0,z0 = sphere; x = 30 + 30*x0; y = 50 + 30*y0; z = 50 + 30*z0;【例例3.3-13】繪制一個透明的立方體盒子,里面放紅色、藍色和繪制一個透明的立方體

54、盒子,里面放紅色、藍色和黃色三個球。黃色三個球。MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10 h1 = surf(x,y,z,linestyle,none,FaceColor,r,EdgeColor,none); x = 110 + 30*x0; y = 110 + 30*y0; z = 50 + 30*z0; h2 = surf(x,y,z,linestyle,none,FaceColor,b,EdgeColor,none); x = 110 + 30*x0; y = 30 + 30*y0; z = 50 + 30*z0; h3 = surf(

55、x,y,z,linestyle,none,FaceColor,y,EdgeColor,none); lightangle(45,30); lighting phong; axis equal; xlabel(X); ylabel(Y); zlabel(Z); MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10第四節第四節 圖形的打印和輸出圖形的打印和輸出MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10一、把圖形復制到剪

56、貼板一、把圖形復制到剪貼板1. 界面操作界面操作MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10 復制選項設置復制選項設置實際上在將圖形窗口中的圖形復制到剪貼板之前,還實際上在將圖形窗口中的圖形復制到剪貼板之前,還可以通過界面操作對復制選項進行設置。選擇可以通過界面操作對復制選項進行設置。選擇“Edit”菜單下的菜單下的“Copy Options”選項,彈出復制選項界面,選項,彈出復制選項界面,本界面用來設置圖形復制到剪貼板的格式(本界面用來設置圖形復制到剪貼板的格式(Clipboard format)、背景顏色()、背景顏色(Figure back

57、ground color)和圖)和圖形尺寸(形尺寸(Size)。)。MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10 復制模板設置復制模板設置在復制選項界面的左方瀏覽樹在復制選項界面的左方瀏覽樹中選中中選中Figure Copy Template節節點,將彈出復制模板界面。點,將彈出復制模板界面。復復制模板界面中給出了制模板界面中給出了3個模板選個模板選項:項:Word、PowerPoint和和Restore Defaults,當需要把,當需要把MATLAB圖形窗口中的圖形復圖形窗口中的圖形復制粘貼到制粘貼到Microsoft Word和和Micro

58、soft PowerPoint應用程序時,應用程序時,分別可以用前兩個模板,最后一個選項用來恢復默認設置。分別可以用前兩個模板,最后一個選項用來恢復默認設置。MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-102. 利用利用MATLAB命令進行復制操作命令進行復制操作 print函數函數調用格式:調用格式:printprint(argument1,argument2,.)print(handle,filename)print argument1 argument2 . argumentnpcmd,dev = printoptMATLAB繪圖繪圖 謝中華謝

59、中華, MATLAB從零到進階從零到進階. 2022-6-10 h = figure; ezplot(sin(x) ,0,2*pi); print(h, -dmeta) 【例例3.4-1】調用調用print函數復制圖形到剪貼板。函數復制圖形到剪貼板。MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10 hgexport函數函數調用格式:調用格式: hgexport(h,filename)把句柄值為把句柄值為h的圖形窗口中的圖形寫入默認的的圖形窗口中的圖形寫入默認的eps格式格式文件。文件。filename為字符串,用來指明文件名和保存路徑,為字符串,用來

60、指明文件名和保存路徑,如果不指明保存路徑,圖形默認保存到如果不指明保存路徑,圖形默認保存到MATLAB當前當前文件夾。文件夾。 hgexport(h,-clipboard)把句柄值為把句柄值為h的圖形窗口中的圖形復制到的圖形窗口中的圖形復制到Windows剪貼剪貼板。板。MATLAB繪圖繪圖 謝中華謝中華, MATLAB從零到進階從零到進階. 2022-6-10 h = figure; ezplot(sin(x) ,0,2*pi); hgexport(h, -clipboard); 【例例3.4-1續續】調用調用hgexport函數復制圖形到剪貼板。函數復制圖形到剪貼板。MATLAB繪圖繪圖

溫馨提示

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

評論

0/150

提交評論