《MATLAB7 基礎教程》課件第7章_第1頁
《MATLAB7 基礎教程》課件第7章_第2頁
《MATLAB7 基礎教程》課件第7章_第3頁
《MATLAB7 基礎教程》課件第7章_第4頁
《MATLAB7 基礎教程》課件第7章_第5頁
已閱讀5頁,還剩187頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

7.1圖形窗口7.2繪制二維圖形7.3繪制三維圖形7.4繪制特殊圖形7.1.1圖形窗口的創建與設置

創建一個圖形對象時,MATLAB將自動選擇該圖形對象的屬性值。利用get函數可以獲得當前圖形對象的屬性,如果需要修改某項屬性,則可以通過set函數來實現。通常使用gcf命令獲得當前圖形的句柄以作為get、set函數的輸入參量。7.1圖形窗口

1.figure函數

figure函數用于創建一個新的圖形對象,其調用格式如下:

●?figure:使用默認屬性值新建一個圖形對象。

●?figure(‘PropertyName’,propertyvalue,…):使用指定屬性值新建一個圖形對象。對于未指定的屬性,MATLAB則使用默認屬性。

●?figure(h):如果h為現有圖形的句柄,figure(h)則使由h確定的圖形成為當前圖形,使該圖形可視并顯示于屏幕的最前端,當前圖形為圖形輸出的目標;如果h不是現有圖形的句柄而是一個整數,figure(h)則創建一個圖形并將其賦值為句柄h。

●?h=figure(…):返回圖形對象的句柄。

2.gcf函數

gcf函數用于獲取當前圖形的句柄,其調用格式為h=gcf。

3.get函數

get函數用于查詢對象的屬性,其常用的調用格式如下:

●?get(h):返回句柄h指定的圖形對象的所有屬性和當前值。

●?get(h,'PropertyName'):返回由h指定的圖形對象的屬性PropertyName的屬性值。

4.set函數

set函數用于設置對象的屬性,其常用的調用格式為

set(h,‘PropertyName’,PropertyValue,…)

該函數設置由h指定的對象的屬性名PropertyName的屬性值為PropertyValue。h可以為句柄向量,這種情況下將設置所有對象的屬性值。

【例】圖形窗口的創建、查看與設置。

在命令窗輸入:

>>figure

>>x=0:pi/10:2*pi;

>>y=sin(x);

>>plot(x,y,‘k-*’)

運行結果如圖7-1所示。圖7-1函數y=sin(x)的波形圖繼續在命令窗輸入:

>>get(findobj(‘Type’,‘line’),‘color’)

運行結果:

ans=

000

再在命令窗輸入:

>>set(findobj(‘Type’,‘line’),‘Color’,‘b’)

>>set(findobj('Type','line'),'linestyle',':')

運行結果如圖7-2所示。圖7-2屬性設置后的波形圖繼續在命令窗輸入:

>>get(findobj(‘Type’,‘line’),‘color’)

運行結果:

ans=

0017.1.2圖形窗口的工具欄

圖形窗口的工具欄由圖形工具欄、照相機工具欄和繪圖編輯工具欄三部分組成。個別工具欄按鈕功能與MATLAB標準工具欄按鈕的功能相同,這里不作介紹。本小節將對作圖形窗口特有的工具欄按鈕進行詳細介紹。1.圖形工具欄

:進入圖形編輯模式。

:放大視圖。

:縮小視圖。

:平移圖形。

:三維旋轉。

:光標取點。

:插入顏色條。

:插入繪圖標記。

:隱藏繪圖工具。

:顯示繪圖工具。2.照相機工具欄

:旋轉照相機。

:改變光照位置偏移。

:移動照相點。

:水平或豎直移動照相機。

:前后移動照相機。

:縮放照相機。

:旋轉照相機。

:以X軸為主。:以Y軸為主。

:以Z軸為主。

:無主軸。

:切換景物光。

:正交投影。

:透視投影。

:復位照相機和景物光。

:停止照相機和光線變動。3.繪圖編輯工具欄

:插入直線。

:插入箭頭。

:插入雙箭頭。

:插入帶文字的箭頭。

:插入文字。

:插入矩形。

:插入橢圓。

:增加坐標軸pin。

:排列分布。7.1.3圖形窗口的主菜單

本小節將詳細介紹圖形窗口的主菜單功能。

1.File菜單

●?New:新建M文件、圖形窗口、工作區間變量、GUI。

●?Open:打開圖形文件。

●?Close:關閉當前圖形窗口。

●?Save:保存當前圖形文件。

●?SaveAs:將當前圖形文件另存為。●?GenerateM-File:生成M文件繪圖函數。

●?ImportData:導入數據。

●?SaveWorkspaceAs:將圖形數據保存為.mat文件。

●?Preferences:環境設置。

●?ExportSetup:圖形輸出屬性設置。

●?PrintPreview:打印預覽。

●?Print:打開打印對話框。

2.Edit菜單

●?Undo:撤消。

●?Redo:恢復。

●?Cut、Copy、Paste、ClearClipboard、Delete、SelectAll:分別實現圖形數據的剪切、復制、粘貼、清除剪貼板、刪除、全選操作,進入圖形編輯模式時才可用。

●?CopyFigure:復制整個圖形。

●?CopyOption:設置復制圖形選項。

●?FigureProperties:打開圖形屬性編輯器,如圖7-3所示。圖7-3圖形屬性編輯器●?AxesProperties:打開坐標軸屬性編輯器,如圖7-4所示。

●?CurrentObjectProperties:打開當前對象的屬性編輯器。

●?Colormap:打開彩色圖編輯器。

●?FindFiles:查找文件。

●?ClearFigure、ClearCommandWindow、ClearCommandHistory、ClearWorkspace:分別用于清除圖形、清除命令窗、清除歷史命令記錄、清除工作區間。圖7-4坐標軸屬性編輯器

3.View菜單

●?FigureToolbar:顯示圖形工具欄。

●?CameraToolbar:顯示照相機工具欄。

●?PlotEditToolbar:顯示繪圖編輯工具欄。

●?FigurePalette:打開圖形調色板,見圖7-5。

●?PlotBrowser:打開繪圖瀏覽器,見圖7-5。

●?PropertyEditor:打開屬性編輯器,見圖7-5。圖7-5圖形調色板、繪圖瀏覽器和屬性編輯器

4.Insert菜單

該菜單中大部分功能與工具欄按鈕功能相同,這里不重復介紹。

●?XLabel:標注X坐標。

●?YLabel:標注Y坐標。

●?ZLabel:標注Z坐標。

●?Title:標注標題。

●?Axes:添加坐標軸。

●?Light:添加光照。

5.Tools菜單

該菜單絕大部分功能與工具欄按鈕功能相同。

6.Window菜單

該菜單用于在命令窗和圖形窗之間切換。

7.Help菜單

該菜單用于查詢有關圖形功能的相關幫助。7.2.1基本繪圖函數

線圖是MATLAB最基本的繪圖,本小節主要介紹MATLAB線圖的繪制。繪制線圖的函數如表7-1所示。7.2繪制二維圖形表7-1線圖的繪制函數

1.plot函數

plot函數用于繪制二維曲線圖,其調用格式如下:

●?plot(Y):如果Y為實數,繪制縱坐標為Y的列向量,橫坐標為列索引的二維圖像;如果Y為復數,plot(Y)等價于plot(real(Y),imag(Y))。在所有plot函數的其他用法中,虛數部分將被忽略。

●?plot(X1,Y1,…):繪制所有由數據對Xn與Yn構成的曲線。如果只有Xn或Yn是矩陣,則根據向量與矩陣的行或列是否匹配繪制向量對于矩陣的行或列構成的圖像。如果Xn是標量且Yn為向量,則在過Xn的垂線上繪制離散點Yn?!?plot(X1,Y1,LineSpec,…):繪制所有由Xn、Yn、LineSpec定義的曲線,其中LineSpec用于指定線型、標記符號和曲線顏色??梢曰旌鲜褂肵n、Yn、LineSpec與Xn、Yn,如plot(X1,Y1,X2,Y2,LineSpec,X3,Y3)。

●?plot(…,‘PropertyName’,PropertyValue,…):對所有由plot函數創建的圖形的屬性進行設置。

●?plot(axes_handle,…):在句柄axes_handle指定的坐標軸內繪圖。

●?h=plot(…):返回圖形對象的句柄列向量,一條線對應一個句柄?!纠縫lot函數繪圖。

在命令窗輸入:

>>x=-pi:pi/10:pi;

>>y=sin(x);

>>plot(x,y,'--p','LineWidth',2,'MarkerEdgeColor','b','MarkerFaceColor','k','MarkerSize',6)

運行結果如圖7-6所示。圖7-6plot函數繪圖

2.plotyy函數

plotyy函數用于繪制雙y坐標的二維曲線圖,其調用格式如下:

●?plotyy(X1,Y1,X2,Y2):繪制由X1、Y1和X2、Y2確定的兩組曲線,其中X1、Y1的坐標軸在圖形窗口的左側,X2、Y2的坐標軸在圖形窗口的右側。

●?plotyy(X1,Y1,X2,Y2,function):使用function指定的繪圖函數繪圖,function可以是函數句柄或字符串plot、semilogx、semilogy、loglog、stem或符合語法h=function(x,y)的MATLAB函數?!?plotyy(X1,Y1,X2,Y2,‘function1’,‘function2’):在左側坐標軸使用function1(X1,Y1)繪圖,在右側坐標軸使用function2(X1,Y1)繪圖。

●?[AX,H1,H2]=plotyy(…):返回在AX中創建的兩個坐標軸的句柄和H1及H2中每個圖形繪圖對象的句柄,AX(1)為左側軸,AX(2)為右側軸。

【例】plotyy函數繪圖。在命令窗輸入:

>>x=0:0.01:10;

>>y1=100*exp(-0.1*x).*sin(2*x);

>>y2=0.4*exp(-x).*sin(20*x);

>>[AX,H1,H2]=plotyy(x,y1,x,y2,‘plot’);

>>set(get(AX(1),'Ylabel'),'String','SlowDecay')

>>set(get(AX(2),‘Ylabel’),‘String’,‘FastDecay’)

>>xlabel(‘Time(\musec)’)

>>title(‘MultipleDecayRates’)

>>set(H1,‘LineStyle’,‘-.’)

>>set(H2,'LineStyle',':')

運行結果如圖7-7所示。圖7-7plotyy函數繪圖

3.semilogx函數與semilogy函數

semilogx函數或semilogy函數分別用于繪制x軸為對數坐標或y軸為對數坐標的二維曲線圖,其調用格式如下:

●?semilogx(Y):繪制x軸刻度是以10為底的對數,y軸刻度是線性刻度的二維曲線圖。如果Y為實數,則繪制縱坐標為Y的列向量,橫坐標為列索引的二維x軸對數圖;如果Y為復數,semilogx(Y)等價于semilogx(real(Y),imag(Y))。在所有semilogx函數的其他用法中,虛數部分將被忽略?!?semilogy(…):繪制y軸刻度是以10為底的對數,x軸刻度是線性刻度的二維曲線圖。

●semilogx(X1,Y1,…):繪制所有由數據對Xn與Yn構成的曲線。如果只有Xn或Yn是矩陣,則根據向量與矩陣的行或列是否匹配繪制向量對于矩陣的行或列構成的圖像。

●?semilogx(X1,Y1,LineSpec,…):繪制所有由Xn、Yn、LineSpec定義的曲線,其中LineSpec用于指定線型、標記符號和曲線顏色。

●?semilogx(…,‘PropertyName’,PropertyValue,…):對所有由semilogx函數創建的圖形的屬性進行設置。

●?h=semilogx(…)與h=semilogy(…):返回圖形對象的句柄向量,一條線對應一個句柄?!纠縮emilogx函數繪圖。

在命令窗輸入:

>>x=0:.1:10;

>>semilogx(x,1./(1+x))

>>grid

運行結果如圖7-8所示。圖7-8semilogx函數繪圖

4.loglog函數

●?loglog(Y):繪制x軸y軸刻度均是以10為底的對數的二維曲線圖。如果Y為實數,則繪制縱坐標為Y的列向量,橫坐標為列索引的二維對數圖;如果Y為復數,則loglog(Y)等價于loglog(real(Y),imag(Y))。在所有loglog函數的其他用法中,虛數部分將被忽略。

●?loglog(X1,Y1,…):繪制所有由數據對Xn與Yn構成的曲線。如果只有Xn或Yn是矩陣,則根據向量與矩陣的行或列是否匹配繪制向量對于矩陣的行或列構成的圖像。●?loglog(X1,Y1,LineSpec,…):繪制所有由Xn、Yn、LineSpec定義的曲線,其中LineSpec用于指定線型、標記符號和曲線顏色??梢曰旌鲜褂肵n、Yn、LineSpec與Xn、Yn,如loglog(X1,Y1,X2,Y2,LineSpec,X3,Y3)。

●?loglog(…,‘PropertyName’,PropertyValue,…):對所有由loglog函數創建的圖形的屬性進行設置。

●?h=loglog(…):返回圖形對象的句柄列向量,一條線對應一個句柄?!纠縧oglog函數繪圖。

在命令窗輸入:

>>x=0:.01:1;

>>loglog(x,1./(1+x))

>>grid

運行結果如圖7-9所示。圖7-9loglog函數繪圖7.2.2圖形處理函數

實際應用中,通常需要對顯示的數據圖形進行一定的處理,如改變線型、顏色以及圖形標注等。MATLAB為用戶提供了豐富的圖形處理函數,本小節將主要介紹這些函數通常的用法和功能。

1.圖形標注

函數xlabel(ylabel、zlabe)分別用于實現圖形的x(y、z)坐標軸標注,其常用調用格式為

xlabel('string','PropertyName',PropertyValue,…)其中,string為待標注的字符串,并用PropertyName和PropertyValue指定文字屬性。

函數title用于實現圖形的標題標注,其常用調用格式為

title(‘string’,‘PropertyName’,PropertyValue,…)

其中,string為待標注的字符串,并用PropertyName和PropertyValue指定文字屬性。

【例】坐標軸標注和標題標注。在命令窗輸入:

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

>>y=sin(x);

>>plot(x,y)

>>xlabel(‘x=0:2\pi’)

>>ylabel(‘Sineofx’)

>>title('PlotoftheSineFunction','FontSize',12)運行結果如圖7-10所示。

函數text用于實現圖形任意位置的文字標注,其常用調用格式如下:

●?text(x,y,‘string’):在指定點(x,y)處添加文字標注。

●?text(x,y,z,‘string’):在三維坐標系內添加文字標注。

●?text(x,y,z,'string','PropertyName',PropertyValue…):在坐標系內添加文字標注,并指定文字屬性。

●?text(‘PropertyName’,PropertyValue…):完全忽略坐標系并用PropertyName和PropertyValue指定所有屬性。

●?h=text(…):返回一個text對象的句柄列向量,一個對象對應一個句柄。圖7-10坐標軸標注和標題標注【例】在最大值和最小值處標注。

在命令窗輸入:

>>Z=peaks;

>>h=plot(Z(:,33));

>>x=get(h,‘XData’); %獲取繪圖數據

>>y=get(h,‘YData’);

>>imin=find(min(y)==y);

%尋找最大值和最小值索引>>imax=find(max(y)==y);

>>text(x(imin),y(imin),['Minimum=',num2str(y(imin))],…

'VerticalAlignment','middle', 'HorizontalAlignment','left', 'FontSize',10)

>>text(x(imax),y(imax),['Maximum=',num2str(y(imax))],…

'VerticalAlignment','bottom', 'HorizontalAlignment','right', 'FontSize',10)

運行結果如圖7-11所示。圖7-11標注最大值和最小值

2.指定線型和顏色

如果在繪圖時需要指定圖形的線型和顏色,則可以使用類似plot(x,y,‘color_style_marker’)形式的語句來直接實現。color_style_marker是一個包含1~4個字符的字符串,它由顏色、線型和標記類型組合而成,它們的符號和含義如下:

●顏色字符串:'c'、'm'、'y'、'r'、'g'、'b'、'w'、'k'?分別對應青色、品紅色、黃色、紅色、綠色、藍色、白色、黑色。●?線型字符串:‘-’、‘--’、‘:’、‘-.’

分別對應實線、虛線、點線、點劃線??梢酝ㄟ^LineWidth屬性設置線寬。

●?直接標記類型:‘+’、‘o’、‘*’、‘x’分別對應加號、圓圈、星號、叉號;特殊標記類型:‘s’、‘d’、‘^’、‘v’、‘>’、‘<’、‘p’、‘h’

分別對應正方形、鉆石、上三角、下三角、右三角、左三角、五角星、六角星??梢酝ㄟ^MarkerEdgeColor、MarkerFaceColor和MarkerSize屬性設置標記的邊框色、填充色和大小?!纠恐付ň€型、顏色和標記。

在命令窗輸入:

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

>>plot(x,sin(x),'r:h')

運行結果如圖7-12所示。圖7-12指定線型、顏色和標記

3.多張圖形的繪制

如果要顯示多張圖形,則可以通過創建多個圖形窗口來分別顯示或者在一個圖形窗口內同時顯示多張圖形。

如果要新建一個圖形窗口并在該窗口中顯示下一張圖,則可以使用figure命令來實現。更為一般的方法是,在將要繪制的每張圖形之前,使用命令figure(n)來創建第n個圖形窗口,n從1開始。

如果需要在一個圖形窗口內同時顯示多張圖形,則可以使用subplot(m,n,p)命令(或subplot(mnp)命令)來實現。該命令將一個圖形窗口分割成m×n個小窗口,并指定第p個窗口(p也可以是幾個序號的組合)為當前圖形窗口。窗口序號為從第一行開始,依次向下一行計數?!纠慷鄰垐D形的繪制。

在命令窗輸入:

>>figure;

>>x=0:pi/30:2*pi;

>>subplot(2,2,[13])

>>plot(x,3*x)

>>subplot(2,2,2)

>>plot(x,sin(x))

>>subplot(2,2,4)

>>plot(x,cos(x))

運行結果如圖7-13所示。圖7-13多張圖形的繪制

4.坐標軸控制

當繪制一個圖形時,MATLAB會自動完成坐標軸的范圍設定和刻度劃分。為滿足某些特殊需要,用戶可以使用坐標軸控制函數實現坐標的設置。

坐標軸范圍的設置可以通過axis函數實現,其常用調用格式為

axis([xmin,xmax,ymin,ymax])其中,坐標軸范圍的最大值必須大于最小值。如果不需要設置某個最大值(最小值),則可以使用Inf(-Inf),MATLAB會根據數據范圍進行自動設置。

如果需要對圖形的坐標軸刻度進行指定,則可以通過對xtick或ytick屬性的設置來實現。例如,set(gca,'ytick',v)用遞增的向量v來表示y刻度點,刻度可以不是均勻劃分的。下面通過實例來說明坐標軸的控制方法?!纠孔鴺溯S的控制。

在命令窗輸入:

>>x=-pi:.1:pi;

>>y=sin(x);

>>plot(x,y)

>>axis([-pipi-infinf])

>>set(gca,'xtick',[-3.1:.5:4])運行結果如圖7-14所示。

默認情況下,MATLAB在一個與圖形窗口具有相同縱橫比的矩形坐標軸區域內顯示圖形。用戶可以根據需要使用axis函數改變顯示圖形的縱橫比。常用的縱橫比設置命令

如下:

●?axissquare:設置圖形顯示區域為正方形。

●?axisequal:設置坐標軸具有相同長度的刻度。

●?axistight:設置坐標軸的范圍等于數據的范圍。圖7-14控制坐標軸使用grid函數可以添加或者取消坐標的網格線。命令gridon用于添加網格線,命令gridoff用于取消網格線,命令grid可在添加和取消網格線之間進行切換。

【例】設置坐標軸的縱橫比。

在命令窗輸入:

>>t=0:pi/20:2*pi;

>>subplot(221)

>>plot(sin(t),2*cos(t))

>>gridon

>>subplot(222)>>plot(sin(t),2*cos(t))

>>gridon

>>axissquare

>>subplot(223)

>>plot(sin(t),2*cos(t))

>>gridon

>>axisequal

>>subplot(224)

>>plot(sin(t),2*cos(t))

>>gridon

>>axisequaltight

運行結果如圖7-15所示。

使用box函數可以顯示或隱藏坐標邊界。命令boxon用于顯示坐標邊界,命令boxoff用于隱藏坐標邊界。圖7-15設置坐標軸的縱橫比【例】使用box函數。

在命令窗輸入:

>>x=-pi:.1:pi;

>>y=sin(x);

>>subplot(211)

>>plot(x,y)

>>boxon

>>subplot(212)

>>plot(x,y)

>>boxoff

運行結果如圖7-16所示。圖7-16使用box函數如果要在一張圖上同時顯示多個二維曲線,則可以使用holdon命令,接著繪制所有待顯示的曲線。當這張圖繪制完畢時,則使用holdoff關閉該模式。如果需要標明這些曲線,則可以使用legend函數加以區分。legend函數的常用調用格式為legend('string1','string2',…),如果有n條曲線,則用'string1'、'string2'…'stringn'來標注?!纠坷L制多條曲線。

在命令窗輸入:

>>x=0:pi/10:2*pi;

>>y=sin(x);

>>y2=sin(x-.25);

>>y3=sin(x-.5);

>>plot(x,y,‘k-*’)

>>holdon

>>plot(x,y2,‘b:o’)

>>plot(x,y3,‘r-.p’)

>>holdoff

>>legend('sin(x)','sin(x-.25)','sin(x-.5)')

運行結果如圖7-17所示。圖7-17繪制多條曲線本節主要介紹基本三維繪圖的方法。有關三維基本繪圖的函數如表7-2所示。

7.3.1三維曲線圖

plot3函數用于繪制三維曲線圖,其調用格式如下:

●?plot3(X1,Y1,Z1,…):在三維空間繪制由數據點X1、Y1、Z1確定的一條或多條曲線,其中X1、Y1、Z1可以是向量或矩陣。7.3繪制三維圖形表7-2三維基本繪圖函數●?plot3(X1,Y1,Z1,LineSpec,…):繪制所有由Xn、Yn、Zn、LineSpec定義的三維曲線,其中LineSpec用于指定線型、標記符號和曲線顏色。

●?plot3(…,‘PropertyName’,PropertyValue,…):對所有由plot3函數創建的圖形的屬性進行設置。

●?h=plot3(…):返回圖形對象的句柄列向量,一個對象對應一個句柄?!纠渴褂胮lot3函數繪圖。

在命令窗輸入:

>>t=0:pi/50:6*pi;

>>plot3(t.*sin(3*t),t.*cos(3*t),t)

>>grid

運行結果如圖7-18所示。圖7-18使用plot3函數繪圖7.3.2三維網格圖

mesh函數用于繪制三維網格圖,meshc函數用于同時繪制三維網格圖和等高線圖,meshz函數用于繪制帶垂簾的三維網格圖,它們的調用格式如下:

●?mesh(X,Y,Z):繪制顏色和曲面的高度Z成正比的三維網格圖。如果X與Y均為向量,length(X)=n、length(Y)=m,其中[m,n]=size(Z),(X(j),Y(i),Z(i,j))則為網格線的交點。X與Y分別對應Z的列向量;如果X與Y均為矩陣,(X(i,j),Y(i,j),Z(i,j))則為網格線的交點。●?mesh(Z):繪制由X=1:n、Y=1:m以及Z確定的網格圖。其中,[m,n]=size(Z),高度Z為定義在直角坐標網上的單值函數,網格顏色和曲面的高度成正比。

●?mesh(…,C):繪制顏色由矩陣C確定的三維網格圖。MATLAB通過對C的數據進行線性處理,從當前色彩圖中獲得顏色。如果X、Y、Z為矩陣,則必須與C具有相同的尺寸。

●?mesh(…,'PropertyName',PropertyValue,…):對指定的曲面屬性進行設置,允許一次設置多個屬性。●?mesh(axes_handles,…):在句柄axes_handle指定的坐標軸內繪圖。

●?meshc(…):在網格圖下繪制等高線。

●?meshz(…):在網格圖周圍繪制垂簾。

●?h=mesh(…)、h=meshc(…)、h=meshz(…):返回曲面圖形對象的句柄。

【例】繪制網格圖。在命令窗輸入:

>>[X,Y]=meshgrid(-3:.125:3);

>>Z=peaks(X,Y);

>>mesh(X,Y,Z);

>>figure;

>>meshc(X,Y,Z);

>>figure;

>>meshz(X,Y,Z);

運行結果如圖7-19~圖7-21所示。圖7-19網格圖圖7-20網格圖與等高線圖圖7-21帶垂簾的網格圖7.3.3三維曲面圖

surf函數和surfc函數用于繪制帶陰影的三維曲面圖,而surfl函數則用于繪制帶彩色光照的三維曲面圖。

1.surf、surfc函數

surf函數用于繪制帶陰影的三維曲面圖,surfc函數用于同時繪制帶陰影的曲面圖和等高線圖。它們的調用格式如下:

●?surf(Z):創建一個由矩陣Z的z部分確定的三維帶陰影的曲面圖,x=1:n、y=1:m,其中[m,n]=size(Z)。高度Z為定義在幾何直角坐標網上的單值函數,且曲面顏色和高度Z成正比?!?surf(Z,C):繪制高度Z為定義在幾何直角坐標網上的單值函數的曲面圖,其顏色由與Z尺寸相同的矩陣C確定。

●?surf(X,Y,Z):創建一個高度和顏色由Z確定的曲面圖。X、Y為確定曲面的x或y部分的向量或矩陣。如果X與Y均為向量,length(X)=n、length(Y)=m,其中[m,n]=size(Z),(X(j),Y(i),Z(i,j))則為曲面的節點。

●?surf(X,Y,Z,C):創建一個顏色由C確定的帶陰影的曲面圖。MATLAB通過對C的數據進行線性處理,從當前色彩圖中獲得顏色?!?surf(…,‘PropertyName’,PropertyValue):對曲面屬性進行設置。

●surf(axes_handles,…)、surfc(axes_handles,…):在句柄axes_handle指定的坐標軸內繪圖。

●?surfc(…):在曲面圖下繪制等高線。

●?h=surf(…)、h=surfc(…):返回曲面圖形對象的句柄。

【例】繪制曲面圖。在命令窗輸入:

>>[X,Y,Z]=peaks(30);

>>surf(X,Y,Z)

>>figure

>>surfc(X,Y,Z)

運行結果如圖7-22、圖7-23所示。圖7-22曲面圖圖7-23曲面圖與等高線圖

2.surfl函數

surfl函數用于繪制帶彩色光照的三維曲面圖,其調用格式如下:

●?surfl(Z)、surfl(X,Y,Z):創建一個帶陰影的三維曲面,光源方向和光照系數為默認值。X、Y、Z為定義曲面x、y、z部分的向量或矩陣。

●?surfl(…,'light'):利用MATLAB光照對象創建一個有顏色和光照的曲面。該結果不同于默認光照法surfl(…,'cdata'),因為后者將曲面的顏色數據改為表面的反射系數。●?surfl(…,s):指定光源的方向。s為指定曲面到光源方向的二維向量[azimuthelevation]或三維向量[sxsysz]。s的默認值為從當前視角開始逆時針45°。

●?surfl(X,Y,Z,s,k):指定反射系數常數k。k為定義環境光系數、漫反射系數、鏡面反射系數與鏡面光亮系數相對作用的四元素向量。k=[kakdksshine]并且默認值為[.55,.6,.4,10]。

●?h=surfl(…):返回曲面圖形對象的句柄。【例】繪制光照曲面圖。

在命令窗輸入:

>>[X,Y,Z]=peaks(30);

>>surfl(X,Y,Z)

>>shadinginterp

>>colormapcopper

運行結果如圖7-24所示。圖7-24光照曲面圖7.4.1條形圖與區域圖

條形圖和區域圖常用于查看和對比周期性的數據組,條形圖適于顯示離散數據,區域圖則適于顯示連續數據。有關條形圖和區域圖的函數如表7-3所示。7.4繪制特殊圖形表7-3條形圖和區域圖繪制函數

1.bar、barh函數

bar函數用于在二維豎直條形圖上顯示向量或矩陣的值,barh函數用于在二維水平條形圖上顯示向量或矩陣的值。它們的調用格式如下:

●?bar(Y):繪制Y的每個元素的條形圖。如果Y為矩陣,則將Y的元素按行分成組,x軸坐標從1到size(Y,1)。如果Y為向量,則x軸坐標從1到length(Y)?!?bar(x,Y):在以向量x指定的x軸上繪制Y元素的豎直條形圖。x的值可以是非單調的,但是必須保證不含有重復值。如果Y為矩陣,則將Y的元素按行分成組,再在以x指定的x軸上繪制Y的行元素的條形圖。

●?bar(…,width):設置條形相對寬度并控制一組內的條形間距。寬度默認值為0.8,所以如果沒有指定x,則同組內的條形間距會很小。如果寬度為1,則同組內的條形相互接觸?!?bar(…,‘style’):指定條形的樣式,‘style’可以是‘grouped’或‘stacked’,‘grouped’為默認顯示模式。

■?‘grouped’:顯示m組豎直條形圖,每組條形數為n。其中m為Y的行數,n為Y?的列數。

■?‘stacked’:將Y的每一個行顯示在一個條形中,條形的高度為該行元素之和。一行內不同元素的條形顏色不同,以區分每個元素在總條形的貢獻。

●?bar(…,'bar_color'):按照由單個縮寫字母'r'、'g'、'b'、'c'、'm'、'y'、'k'或'w'指定的顏色繪制條形圖?!?bar(axes_handle,…)、barh(axes_handle,…):在句柄axes_handle指定的坐標軸內繪圖。

●?h=bar(…):返回一個barseries圖形對象的句柄向量,每個條形對應一個句柄。如果Y為矩陣,Y的一列對應一個條形圖形對象。

●?barh(…)、h=barh(…):創建水平條形圖。條形長度由Y決定。向量x定義水平條形的y軸間隔。x的值可以是非單調的,但是必須保證不含有重復值?!纠坷L制二維條形圖。

在命令窗輸入:

>>Y=round(rand(5,3)*7);

>>subplot(2,2,1)

>>bar(Y,‘group’)

>>title‘Group’

>>subplot(2,2,2)

>>bar(Y,‘stack’)

>>title'Stack'

>>subplot(2,2,3)

>>barh(Y,‘stack’)

>>title‘Stack’

>>subplot(2,2,4)

>>bar(Y,1.5)

>>title'Width=1.5'

運行結果如圖7-25所示。圖7-25二維條形圖

2.bar3、bar3h函數

bar3函數用于在三維豎直條形圖上顯示向量或矩陣的值,bar3h函數用于在三維水平條形圖上顯示向量或矩陣的值。它們的調用格式如下:

●?bar3(Y):繪制Y的每個元素的三維條形圖。如果Y為向量,則x軸坐標從1到length(Y)。如果Y為矩陣,則x軸坐標從1到size(Y,2),并且將Y的元素按行分成組。●?bar3(x,Y):在以向量x指定的x軸上繪制Y元素的豎直條形圖。x的值可以是非單調的,但是必須保證不含有重復值。如果Y為矩陣,則將Y的元素按行分成組。再在以x指定的x軸上繪制Y的行元素的條形圖。

●?bar3(…,width):設置條形相對寬度并控制一組內的條形間距。寬度默認值為0.8,所以如果沒有指定x,則同組內的條形間距會很小。如果寬度為1,則同組內的條形相互

接觸。

●?bar3(…,'style'):指定條形的樣式,'style'可以是'detached'、'grouped'或'stacked','detached'為默認顯示模式?!?‘detached’:顯示Y的每行元素,在x方向前后分塊。

■?‘grouped’:顯示n組豎直條形圖,每組條形數為m。其中n為Y的行數,m為Y的列數。

■?‘stacked’:將Y的每一個行顯示在一個條形中,條形的高度為該行元素之和。一行內不同元素的條形顏色不同,以區分每個元素在總條形的貢獻。

●?bar3(…,LineSpec):用指定的顏色LineSpec繪制所有條形。

●?bar3(axes_handle,…):在句柄axes_handle指定的坐標軸內繪圖?!?h=bar3(…):返回一個patch圖形對象的句柄向量,每個條形對應一個句柄。如果Y為矩陣,Y的一列對應一個條形圖形對象。

●?bar3h(…)、h=bar3h(…):創建水平條形圖。條形長度由Y決定。向量x定義水平條形的y軸間隔。

【例】繪制三維條形圖。在命令窗輸入:

>>Y=cool(8);

>>subplot(2,3,1)

>>bar3(Y,‘detached’)

>>title(‘Detached’)

>>subplot(2,3,4)

>>bar3(Y,0.25,‘detached’)

>>title(‘Width=0.25’)

>>subplot(2,3,2)>>bar3(Y,'grouped')

>>title('Grouped')

>>subplot(2,3,5)

>>bar3(Y,0.5,'grouped')

>>title('Width=0.5')

>>subplot(2,3,3)

>>bar3(Y,‘stacked’)

>>title(‘Stacked’)

>>subplot(2,3,6)

>>bar3(Y,0.4,‘stacked’)

>>title(‘Width=0.4’)

>>colormap([100;010;001])

運行結果如圖7-26所示。圖7-26三維條形圖

3.area函數

area函數用于繪制二維區域圖,其調用格式如下:

●?area(Y):繪制向量Y或矩陣Y列之和的區域圖,x軸自動定義為1:size(Y,1)。

●?area(X,Y):對于向量X和Y,area(X,Y)等同于plot(X,Y),不同的是area(X,Y)將0到Y區域用顏色填充。如果Y為矩陣,area(X,Y)繪制Y的列向量構成的區域圖。對于每個X,最終結果為相應Y的列元素之和。如果X為向量,length(X)必須等于length(Y);如果X為矩陣,size(X)必須等于size(Y)?!?area(…,basevalue):指定填充區域的基值,默認基值為0。

●?area(…,‘PropertyName’,PropertyValue,…):對area創建的區域圖的屬性名和屬性值進行設置。

●?area(axes_handle,…):在句柄axes_handle指定的坐標軸內繪圖。

●?h=area(…):返回areaseries圖形對象的句柄。

【例】繪制二維區域圖。在命令窗輸入:

>>Y=[2,5,3;

1,2,7;

2,5,3;

3,6,5];

>>subplot(2,2,1)

>>area(Y)

>>gridon

>>colormapsummer

>>set(gca,'Layer','top')>>subplot(2,2,2)

>>Y(3,1)=-1;%Was1

>>h=area(Y);

>>set(gca,'Layer','top')

>>gridon

>>colormapsummer

>>subplot(2,2,3)

>>h=area(Y);

>>set(gca,'Layer','top')>>gridon

>>colormapsummer

>>set(h,'BaseValue',-2)

>>subplot(2,2,4)

>>h=area(Y,-2);

>>set(h(1),'FaceColor',[.500])

>>set(h(2),'FaceColor',[.700])

>>set(h(3),'FaceColor',[100])

>>set(h,'LineStyle',':','LineWidth',2)

運行結果如圖7-27所示。圖7-27二維區域圖7.4.2餅形圖

餅形圖常用于表示每個元素在向量或矩陣元素總和中所占的比例,通常用pie函數繪制二維餅形圖,用pie3函數繪制三維餅形圖。

1.pie函數

pie函數用于繪制二維餅形圖,其調用格式如下:

●?pie(X):繪制由數據X構成的二維餅形圖,每個X中的元素代表餅形圖的一個切片。●?pie(X,explode):從餅形圖中分離出一個切片。explode為與X對應的由零元素和非零元素組成的向量或矩陣。非零值將從餅形圖的中心分離出對應切片,即如果explode(i,j)非零,則從餅形圖中心分離出X(i,j)。explode與X尺寸必須相同。

●?pie(…,labels):為切片指定文本標簽,標簽數必須等于X的元素數。例如,pie(1:3,{'Taxes','Expenses','Profit'})?!?pie(axes_handle,…):在句柄axes_handle指定的坐標軸內繪圖。

●?h=pie(…):返回patch和text圖形對象的句柄向量。

【例】繪制二維餅形圖。在命令窗輸入:

>>x=[1321.52.5];

>>explode=[00101];

>>pie(x,explode)

運行結果如圖7-28所示。

2.pie3函數

pie3函數用于繪制三維餅形圖,其調用格式如下:

●?pie3(X):繪制由數據X構成的三維餅形圖,每個X中的元素代表餅圖的一個切片。

●?pie3(X,explode):從餅形圖中分離出一個切片。如果explode(i,j)非零,則從餅形圖中心分離出X(i,j)。explode與X尺寸必須相同。圖7-28二維餅形圖●?pie3(…,labels):為切片指定文本標簽,標簽數必須等于X的元素數。例如,pie3(1:3,{‘Taxes’,‘Expenses’,‘Profit’})。

●?pie3(axes_handle,…):在句柄axes_handle指定的坐標軸內繪圖。

●?h=pie3(…):返回patch、surface和text圖形對象的句柄向量。

【例】繪制三維餅形圖。

在命令窗輸入:

>>x=[1321.52.5];

>>explode=[00101];

>>pie3(x,explode)

運行結果如圖7-29所示。圖7-29三維餅形圖7.4.3直方圖

hist函數通常用于繪制笛卡爾坐標系下的直方圖,rose函數通常用于繪制極坐標系下的直方圖。

1.hist函數

hist函數用于繪制直方圖,其調用格式如下:

●?n=hist(Y):將向量Y中的元素放入等距的10個條形中,且以行向量形式返回每一個條形中的元素個數。若Y為m×p矩陣,則該按列向量對Y進行處理并返回一個10×p的矩陣n。n的每一列包含相應Y列的結果,Y的元素不能為復數?!?n=hist(Y,x):x為向量,按照length(x)分裂Y并放到中心由x元素指定的條形中。

●?n=hist(Y,nbins):nbins為標量,使用nbins個條形。

●?[n,xout]=hist(…):返回向量n和包含頻率計數與條形的位置的向量xout。可以使用bar(xout,n)繪制直方圖。

●?hist(…):無輸出參量,創建上述方法中輸出參量的直方圖。在Y的最小值和最大值之間沿x軸分裂條形。

●?hist(axes_handle,…):在句柄axes_handle指定的坐標軸內繪圖?!纠坷L制直方圖。

在命令窗輸入:

>>x=-2.9:0.1:2.9;

>>y=randn(10000,1);

>>hist(y,x)

運行結果如圖7-30所示。圖7-30直方圖

2.rose函數

rose函數用于繪制極坐標下的直方圖,其調用格式如下:

●?rose(theta):繪制角式直方圖,顯示theta數據在20個或更少的角區間內的分布。向量theta單位為弧度,用于確定每一區間與原點的夾角。每個區間的長度反映出theta的元素落入一組的個數。

●?rose(theta,x):用向量x指定每一區間的號碼和位置。length(x)等于區間數,x的值指定每個區間的中心角度。●?rose(theta,nbins):在[0,2*pi]內繪制出nbins個等距的區間,默認值為20。

●?rose(axes_handle,…):在句柄axes_handle指定的坐標軸內繪圖。

●?h=rose(…):返回用于創建圖形的line對象句柄。

●?[tout,rout]=rose(…):返回向量tout與rout,以便于用polar(tout,rout)繪制直方圖。該語句不產生圖形?!纠坷L制極坐標下的直方圖。

在命令窗輸入:

>>theta=2*pi*rand(1,50);

>>rose(theta)

運行結果如圖7-31所示。圖7-31極坐標下的直方圖7.4.4離散數據圖

繪制離散數據圖的函數有stem、stem3、stairs,其中stem、stem3函數分別用于繪制二維、三維離散序列圖,而stairs函數用于繪制二維階梯圖。

1.stem函數

stem函數用于繪制二維離散序列圖,其調用格式如下:

●?stem(Y):在x軸上等距離繪制離散序列Y。如果Y為矩陣,則將Y分成行向量,在同一x位置處繪制一行向量。●?stem(X,Y):在x軸繪制X,y軸繪制Y的列。X和Y必須是尺寸相同的向量或矩陣。X可以為行或列向量,Y是行數為length(X)的矩陣。

●?stem(…,‘fill’):用顏色填充序列圖末端的圓圈。

●?stem(…,LineSpec):指定線型、標記符號以及序列圖末端的小圓圈顏色。

●?stem(axes_handle,…):在句柄axes_handle指定的坐標軸內繪圖。

●?h=stem(…):返回stemseries對象的句柄向量,一個句柄對應一個Y的數據列?!纠坷L制二維離散序列圖。

在命令窗輸入:

>>x=sin(2*pi/20*[1:20]);

>>stem(x,'fill')

運行結果如圖7-32所示。圖7-32二維離散序列圖

2.stem3函數

stem3函數用于繪制三維離散序列圖,其調用格式如下:

●?stem3(Z):在x?-y平面上繪制數據序列Z的離散序列圖。x與y是自動產生的。如果Z為行向量,stem3將沿x軸平行方向等間距地繪制Z的所有元素;如果Z為列向量,stem3將沿y軸平行方向等間距地繪制Z的所有元素。●?stem3(X,Y,Z):在X和Y值指定的位置繪制數據序列Z的離散序列圖。X、Y、Z必須是尺寸相同的向量或矩陣。

●?stem3(…,‘fill’):用顏色填充序列圖末端的圓圈。

●?stem3(…,LineSpec):指定線型、標記符號以及序列圖末端的小圓圈顏色。

●?h=stem3(…):返回stemseries對象的句柄?!纠坷L制三維離散序列圖。

在命令窗輸入:

>>th=(0:127)/128*2*pi;

>>x=cos(th);

>>y=sin(th);

>>f=abs(fft(ones(10,1),128));

>>stem3(x,y,f‘,’d‘,’fill‘)

>>view([-6030])

運行結果如圖7-33所示。圖7-33三維離散序列圖

3.stairs函數

stairs函數用于繪制階梯圖,其調用格式如下:

●?stairs(Y):繪制Y元素的階梯圖,一條線對應矩陣的一列。軸的ColorOrder屬性決定每條線的顏色。如果Y為向量,則x軸刻度從1變化到length(Y);如果Y為矩陣,則x軸刻度從1變化到Y的行數。

●?stairs(X,Y):在x軸繪制X,y軸繪制Y的元素。X與Y必須具有相同的尺寸,或者如果Y是矩陣,則X可以是行或列向量且滿足length(X)=size(Y,1)?!?stairs(…,LineSpec):指定圖形的線型、標記符號和顏色。

●?stairs(…,‘PropertyName’,propertyvalue):創建階梯圖并對指定屬性進行設置。

●?stairs(axes_handle,…):在句柄axes_handle指定的坐標軸內繪圖。

●?h=stairs(…):返回stairseries對象創建的句柄。

●?[xb,yb]=stairs(Y,…):不產生圖形,返回向量xb和yb以便于使用plot(xb,yb)繪制階梯圖。【例】繪制階梯圖。

在命令窗輸入:

>>x=linspace(-2*pi,2*pi,40);

>>stairs(x,sin(x))

運行結果如圖7-34所示。圖7-34階梯圖7.4.5方向和速度向量圖

MATLAB提供了四個繪制方向和速度向量圖的函數,如表7-4所示。表7-4方向和速度向量圖繪制函數

1.compass函數

compass函數用于繪制從原點發散出的箭頭圖,其調用格式如下:

●?compass(U,V):繪制有n個箭頭的羅盤圖,n為U和V的元素數。每個箭頭的起點為原點,箭頭位置由[U(i),V(i)]確定。

●?compass(Z):繪制有n個箭頭的羅盤圖,n為Z的元素數。每個箭頭的起點為原點,箭頭位置由Z的實部和虛部共同確定。該調用格式等價于compass(real(Z),imag(Z))。

●?compass(…,LineSpec):繪制線型、標記符號和顏色由LineSpec指定的羅盤圖。

●?compass(axes_handle,…):在句柄axes_handle指定的坐標軸內繪圖。

●?h=compass(…):返回line對象的句柄h。【例】繪制羅盤圖。

在命令窗輸入:

>>Z=eig(randn(20,20));

>>compass(Z)

運行結果如圖7-35所示。圖7-35羅盤圖

2.feather函數

feather函數用于繪制速度向量圖,其調用格式如下:

●?feather(U,V):繪制由U和V指定的向量,U包含作為相對坐標系中的x部分,V包含作為相對坐標系中的y部分。

●?feather(Z):繪制由復數Z指定的向量,等價于feather(real(Z),imag(Z))。

●?feather(…,LineSpec):繪制線型、標記符號和顏色由LineSpec指定的羽毛圖。

●?feather(axes_handle,…):在句柄axes_handle指定的坐標軸內繪圖。

●?h=feather(...):返回line對象的句柄h?!纠坷L制速度向量圖。

在命令窗輸入:

>>theta=90:-10:0;

>>r=ones(size(theta));

>>[u,v]=pol2cart(theta*pi/180,r*10);

>>feather(u,v)

運行結果如圖7-36所示。圖7-36速度向量圖

3.quiver函數

quiver函數用于繪制二維向量圖,其調用格式如下:

●?quiver(x,y,u,v):繪制箭頭坐標由x、y中元素指定的向量圖。矩陣x、y、u、v必須具有相同的尺寸并且包含相應的位置和速度分量。x和y也可以是向量。默認情況下箭頭不會重疊,但是可以根據需要對箭頭進行伸長或縮短。

●?quiver(u,v):在等距劃分的x?-y平面點上繪制由u和v指定的向量圖?!?quiver(…,scale):自動處理箭頭使之適應網格并按照標度因子延伸。如果scale=2,則向量相對長度變為2倍;如果scale=0.5,則向量長度減半;如果scale=0,則對向量不作處理。

●?quiver(…,LineSpec):由LineSpec指定線型、標記符號和顏色。quiver函數在向量的原點繪制標記。

●?quiver(…,LineSpec,‘filled’):填充由LineSpec指定的記號。

●?quiver(axes_handle,…):在句柄axes_handle指定的坐標軸內繪圖。

●?h=quiver(…):返回quivergroup對象的句柄?!纠坷L制函數??的梯度場向量圖。

在命令窗輸入:

>>[X,Y]=meshgrid(-2:.2:2);

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

>>[DX,DY]=gradient(Z,.2,.2);

>>contour(X,Y,Z)

>>holdon

>>quiver(X,Y,DX,DY)

>>colormaphsv

>>holdoff

運行結果如圖7-37所示。圖7-37梯度場向量圖

4.quiver3函數

quiver3函數用于繪制三維向量圖,其調用格式如下:

●?quiver3(x,y,z,u,v,w):在點(x,y,z)處由(u,v,w)分量繪制向量。矩陣x、y、z、u、v、w必須具有相同的尺寸并包含相應的位置和速度分量。

quiver3(z,u,v,w):在由z指定的等距劃分的曲面點上繪制向量圖。quiver3自動處理向量距離使它們不會重合?!?quiver3(…,scale):自動處理向量使之相互不重合,然后乘以scale。如果scale=2,則向量相對長度變為2倍;如果scale=0.5,則向量長度減半;如果scale=0,則對向量不作處理。

●?quiver3(…,LineSpec):由LineSpec指定線型和顏色。

●?quiver3(…,LineSpec,‘filled’):填充由LineSpec指定的記號。

●?quiver3(axes_handle,…):在句柄axes_handle指定的坐標軸內繪圖。

●?h=quiver3(…):返回line句柄的向量。【例】繪制函數的曲面法線向量圖。

在命令窗輸入:

>>[X,Y]=meshgrid(-2:0.25:2,-1:0.2:1);

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

>>[U,V,W]=surfnorm(X,Y,Z);

>>quiver3(X,Y,Z,U,V,W,0.5);

>>holdon

>>surf(X,Y,Z);

>>colormaphsv

>>view(-35,45)

>>axis([-22-11-.6.6])

>>holdoff

運行結果如圖7-38所示。圖7-38曲面法線向量圖7.4.6等高線圖

常用有關繪制等高線圖的函數如表7-5所示。表7-5等高線圖繪制函數

1.contourc函數

contourc函數用于計算出等高線繪圖函數contour、contour3和contourf所需的等高線矩陣C

溫馨提示

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

評論

0/150

提交評論