使用數學軟件Matlab建模畫圖程序匯總

1. 二維數據曲線圖

1.1 繪制二維曲線的基本函數

1.plot()函數

plot函數用於繪制二維平面上的線性坐標曲線圖,要提供一組x坐標和對應的y坐標,可以繪制分別以x和y為橫、縱坐標的二維曲線。

例:

t=0:0.1:2*pi; 
x=2 * t; 
y=t.*sin(t).*sin(t); 
plot(x, y);

2.含多個輸入參數的plot函數

plot函數可以包含若幹組向量對,每一組可以繪制出一條曲線。含多個輸入參數的plot函數調用格式為:plot(x1,y1,x2,y2,…,xn,yn)

例:

x=linspace(0,2*pi,100);
plot(x,sin(x),x,2*sin(x),x,3*sin(x))

3.含選項的plot函數

Matlab提供瞭一些繪圖選項,用於確定所繪曲線的線型、顏色和數據點標記符號。這些選項如表所示:

線型 顏色 標記符號
-實線 b藍色 .點 s方塊
:虛線 g綠色 o圓圈 d菱形
.-點劃線 r紅色 x叉 v朝下三角符號
–雙劃線 c青色 +加號 ^朝上三角符號
m品紅 *星號 <朝左三角符號
y黃色 > > >朝右三角符號 p 五角星
k黑色 h 六角星
w白色

例: 用不同的線型和顏色在同一坐標內繪制曲線 及其包絡線。

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,'k:',x,y2,'b--',x1,y3,'rp');

在該plot函數中包含瞭3組繪圖參數,第一組用黑色虛線畫出兩條包絡線,第二組用藍色雙劃線畫出曲線y,第三組用紅色五角星離散標出數據點。

例: 設置正弦曲線的線寬為 3,設置上三角形進行數據點的標記,並設置標記 點邊緣為黑色,設置標記點填充顏色為紅色,設置標記點的尺寸為 10,則 MATLAB 代碼 如下:

% 橫坐標軸 
x = linspace(0, 2*pi, 50); 
% 生成數據點,縱坐標軸 
y = 2 * sin(pi * x); 
% 繪圖 
figure 
% 設置線的寬帶為3 
plot(x, y, 'k--^', 'LineWidth', 3, ...     
    'MarkerEdgeColor', 'k', ...  %設置標記點的邊緣顏色為黑色     
    'MarkerFaceColor', 'r', ...  %設置標記點的填充顏色為紅色     
    'MarkerSize', 10)    %設置標記點的尺寸為10 

例: 利用五角星標記例兩曲線的交叉點

% 橫坐標軸 
x = linspace(0, 2*pi, 1000); 
% 生成數據點,縱坐標軸 
y1 = 0.2 * exp(-0.5 * x).* cos(4 * pi * x); 
y2 = 2 * exp(-0.5 * x) .* cos(pi * x); 
% 查找y1與y2相等點(近似相等)的下標 
k = find( abs(y1-y2) < 1e-2 );  
%取y1與y2相等點的x坐標 
x1 = x(k);  
% 求y1與y2值相等點的y坐標 
y3 = 0.2 * exp(-0.5 * x1) .* cos(4 * pi * x1);  
% 繪圖 
figure 
plot(x, y1, 'r-.', x, y2, 'k:', x1, y3, 'bp','LineWidth',2); 

4.雙縱坐標函數plotyy

在Matlab中,如果需要繪制出具有不同縱坐標標度的兩個圖形,可以使用plotyy函數,它能把具有不同量綱,不同數量級的兩個函數繪制在同一個坐標中,有利於圖形數據的對比分析。使用格式為:plotyy(x1,y1,x2,y2)

x1,y1對應一條曲線,x2,y2對應另一條曲線。橫坐標的標度相同,縱坐標有兩個,左邊的對應x1,y1數據對,右邊的對應x2,y2。

x=0:pi/100:2*pi; 
% 生成曲線 
y1=0.2*exp(-0.5*x).*cos(4*pi*x); 
y2=2*exp(-0.5*x).*cos(pi*x); 
% 繪圖 
figure 
plotyy(x,y1,x,y2); 
plot(x, y1, 'k-', x, y2, 'k-', 'LineWidth', 3) 

1.2 繪制圖形的輔助操作

1.圖形標註

title('圖形名稱')
xlabel('x軸說明')
ylabel('y軸說明')
text(x,y,'圖形說明')
legend('圖例1','圖例2',…)
  • title、xlabel和ylabel函數分別用於說明圖形和坐標軸的名稱。
  • text函數是在坐標點(x,y)處添加圖形說明。
  • legend函數用於繪制曲線所用線型、顏色或數據點標記圖例,圖例放置在空白處,用戶還可以通過鼠標移動圖例,將其放到所希望的位置。

除legend函數外,其他函數同樣適用於三維圖形,在三維中z坐標軸說明用zlabel函數。

例:繪制正弦和餘弦曲線,設置圖形的標題、x 軸和 y 軸的標註,設置曲線標準。

% 橫軸 
x=0:pi/50:2*pi; 
% 曲線數據 
y1=sin(x);  
y2=cos(x); 
% 繪圖 
figure 
plot(x, y1, 'k-', x, y2, 'k-.') 
% 文本標註 
text(pi, 0.05, '\leftarrow sin(\alpha)') 
text(pi/4-0.05, 0.05, 'cos(\alpha)\rightarrow') 
% 標題標註 
title('sin(\alpha) and cos(\alpha)') 
% 坐標軸標註 
xlabel('\alpha') 
ylabel('sin(\alpha) and cos(\alpha)') 

2. 坐標控制

axis([xmin xmax ymin ymax zmin zmax])

如果隻給出前四個參數,則按照給出的x、y軸的最小值和最大值選擇坐標系范圍,繪制出合適的二維曲線。如果給出瞭全部參數,則繪制出三維圖形。

axis函數的功能豐富,其常用的用法有:

axis equal:縱橫坐標軸采用等長刻度

axis square:產生正方形坐標系(默認為矩形)

axis auto:使用默認設置

axis off:取消坐標軸

axis on:顯示坐標軸

axis tight:按緊湊方式顯示坐標軸范圍,即坐標軸范圍為繪圖數據的范圍

grid on/off:命令控制畫還是不畫網格線

例:觀察曲線 y=cos(tan(πx))在 x=0.5 附近的圖形曲線

% x軸 
x = 0:1/3000:1; 
% 生成誤差曲線 
y = cos(tan(pi*x)); 
% 繪圖 
figure 
% 分裂窗口為2*1個子窗口 
subplot(2,1,1) 
plot(x,y) 
title('\itcos(tan(\pix))') 
% 坐標軸調整 
subplot(2,1,2) 
plot(x,y) 
axis([0.4 0.6 -1 1]); 
title('復雜函數的局部透視') 

subplot(m,n,p)

該函數把當前窗口分成m×n個繪圖區,m行,每行n個繪圖區,區號按行優先編號。其中第p個區為當前活動區。每一個繪圖區允許以不同的坐標系單獨繪制圖形。

1.3 繪制二維圖形的其他函數

1.對數坐標圖

在實際應用中,經常用到對數坐標,Matlab提供瞭繪制對數和半對數坐標曲線的函數,其調用格式為:

semilogx(x1,y1,選項1,x2,y2,選項2,…)
semilogy(x1,y1,選項1,x2,y2,選項2,…)
loglog(x1,y1,選項1,x2,y2,選項2,…)

這些函數中選項的定義和plot函數完全一樣,所不同的是坐標軸的選取。

semilogx函數使用半對數坐標,x軸為常用對數刻度,而y軸仍保持線性刻度。semilogy恰好和semilogx相反。

loglog函數使用全對數坐標,x、y軸均采用對數刻度。

例:繪制函數 y=ex

% x軸 
x=0:0.5:5; 
% y軸 
y = exp(x); 
% 繪圖 
figure 
% 笛卡爾坐標系 
subplot(4, 1, 1) 
plot(x, y, 'r-.') 
title('笛卡爾坐標系') 
% 半對數坐標系 
subplot(4, 1, 2) 
semilogx(x, y, 'g:') 
title('x軸為對數坐標系') 
subplot(4, 1, 3) 
semilogy(x, y, 'b-') 
title('y軸為對數坐標系') 
% 對數坐標系 
subplot(4, 1, 4) 
loglog(x, y, 'k:','LineWidth',4) 
title('對數坐標系')

2. 餅圖

pie(x):繪制數據 x 的餅圖,x 可以是向量或者矩陣,x 中的每一個元素將代表餅圖的一個扇區,同時餅圖中顯示各元素總和的比例。

pie(x, explode):繪制數據 x 的餅圖,其中參數 explode 可以用來設置餅圖中某個重要的扇區進行抽取式重點顯示,這裡需要註意的是,explode 向量的長度與 x 中的元素個數相等,並與 x 中的元素意義對應,explode 元素為非零值,對應的元素扇區將從餅圖中分離顯示,通常非零值都設置為 1。

pie(x, labels):繪制數據 x 的餅圖,其中參數 labels 可以用來設置餅圖中各個扇區的顯示標註,註意參數 labels 應該為字符串或者數字利用向量 X中的數據描繪餅圖

例:有一位研究生,在一年中平均每月的費用為生活費 190 元,資料費 33 元, 電話費 45 元,購買衣服 42 元,其他費用 45 元。請以餅圖表示出他每月的消費比例,並在 餅圖中分離出使用最多的費用和使用最少的費用的切片。

% 數據準備 
x=[190 33 45 42 45]; 
% 分離顯示設置 
explode=[1 1 0 0 0]; 
% 繪圖 
figure() 
colormap hsv 
pie(x,explode,{'生活費','資料費','電話費','購買衣服','其他費用'}) 
title('餅圖') 

3. 條形圖

看例子:

%隨機函數產生5*3的數組,對產生的數據取整 
Y = round(rand(5,3)*10);  
% 繪圖 
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') 
%設定條形的寬度為1.5 
subplot(2,2,4) 
bar(Y,1.5) 
title('Width = 1.5') 

例:有一位研究生,在一年中平均每月的費用為生活費 190 元,資料費 33 元, 電話費 45 元,購買衣服 42 元,其他費用 45 元。請以柱狀圖表示出他每月的消費比例。 MATLAB 代碼如下:

% 數據準備 
y=[190 33 45 42 45]; 
x=1:5 ;
% 繪圖 
figure 
bar(x,y) 
title('柱狀圖'); 
set(gca,'xTicklabel',{'生活費','資料費','電話費','購買衣服','其他費用'}) 

4. 排列圖

排列圖又稱累托(Pareto)圖,由一 個橫坐標、兩個縱坐標、多個按高低順序 排列的條形和一條折線組成。其中,橫坐 標表示各因素,左縱坐標表示頻數,右縱 坐標表示頻率,折線表示累積的頻率。該 圖能較好地分析各因素的重要性,可用於 尋找主要問題或主要原因。在MATLAB 中 pareto()函數用於繪制排列圖,其調用格式如下:

pareto(y):繪制數據y的排列圖。y值的大小用排列圖條形的高度表示。pareto(y,x):繪制數據y的排列圖。當x為數值時,用於指定數值型的橫坐標。當 x 為字符串時,用於指定字符串型的橫坐標。

Y=[100 98 97 90 90]; 
names={'第1名' '第2名' '第3名' '第4名' '第5名'}; 
pareto(Y,names) 

2. 三維圖形

2.1 繪制三維曲線

1.用plot3()函數畫三維曲線

最基本的三維圖形函數為plot3,它將二維繪圖函數plot的有關功能擴展到三維空間,可以用來繪制三維曲線。其調用格式為:

plot3(x1,y1,z1,選項1,x2,y2,z2,選項2,…)

其中每一組x,y,z組成一組曲線的坐標參數,選項的定義和plot的選項一樣。當x,y,z是同維向量時,則x,y,z對應元素構成一條三維曲線。當x,y,z是同維矩陣時,則以x,y,z對應列元素繪制三維曲線,曲線條數等於矩陣的列數。

例:

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;

2. 三維網格圖的繪制

在 MATLAB 中,進行三維圖形繪制時,常常需要首先創建三維網格,也就是先創建 平面圖的坐標系。在 MATLAB 中,常用 meshgrid()函數生成網格數據,其調用格式如下。

[X,Y]=meshgrid(x,y):用於生成向量 x 和 y 的網格數據,即變換為矩陣數據 X 和 Y, 矩陣 X 中的行向量為向量 x,矩陣 Y 的列向量為向量 y。[X,Y]=meshgrid(x):生成向量 x 的網格數據,函數等同[X,Y]=meshgrid(x,x)

[X,Y,Z]=meshgrid(x,y,z) :生成向量 x、y、z 的三維網格數據,生成的數據 X 和 Y 可分別表示三維繪圖中的 x 和 y 坐標。

三維網格圖形是指在三維空間內連接相鄰的數據點,形成網格。在MATLAB中繪制三維網格圖的函數主要有mesh()函數、meshc()函數和meshz()函數。其中,mesh()函數最常 用,其調用格式如下:

mesh(x,y,z):繪制三維網格圖,x、y、z 分別表示三維網格圖形在 x 軸、y 軸和 z 軸 的坐標,圖形的顏色由矩陣 z 決定。

mesh(Z):繪制三維網格圖,分別以矩陣 Z 的列下標、行下標作為三維網格圖的 x 軸、y 軸的坐標,圖形的顏色由矩陣 Z 決定。

mesh(...,C):輸入參數C用於控制繪制的三維網格圖的顏色。mesh(...,'PropertyName',PropertyValue,...):設置三維網格圖的指定屬性的屬性值。

函數 meshc()可繪制帶有等值線的三維網格圖,其調用格式與函數 mesh()基本相同, 但函數 meshc()不支持對圖形網格線或等高線指定屬性的設置。

函數 meshz()可繪制帶有圖形底邊的三維網格圖,其調用格式與函數 mesh()基本相同, 但函數 meshz()不支持對圖形網格線指定屬性的設置。

另外,函數ezmesh()ezmeshc()ezmeshz()可根據函數表達式直接繪制相應的三維網格圖。

由於網格線是不透明的,繪制的三維網格圖有時隻能顯示前面的圖形部分,而後面的 部分可能被網格線遮住瞭,沒有顯示出來。 MATLAB中提供瞭命令 hidden 用於觀察圖形後面隱藏的網格,hidden 命令的調用格式如下:

hidden on:設置網格隱藏部分不可見,默認情況下為此狀態。

hidden off:設置網格的隱藏部分可見。

hidden:該命令用於切換網格的隱藏部分是否可見。

例:繪制簡單的三維網格圖

% 數據準備 
t=0:pi/10:pi; 
x=sin(t); 
y=cos(t);  
[X,Y]=meshgrid(x,y); 
z =X + Y;    
% 繪圖 
figure 
mesh (z,'FaceColor','W','EdgeColor','K')
grid 
title('三維網格圖'); 

2.2 三維表面圖的繪制

三維表面圖也可以用來表示三維空間內數據的變化規律,與之前講述的三維網絡圖的 不同之處在於對網格的區域填充瞭不同的色彩。在 MATLAB 中繪制三維表面圖的函數為 surf()函數,其調用格式如下:

surf(Z):繪制數據 Z 的三維表面圖,分別以矩陣 Z 的列下標、行下標作為三維網格圖的 x 軸、y 軸的坐標,圖形的顏色由矩陣 Z 決定。

surf(X, Y, Z):繪制三維表面圖,X、Y、Z 分別表示三維網格圖形在 x 軸、y 軸和 z 軸的坐標,圖形的顏色由矩陣 Z 決定。

surf(X, Y, Z, C):繪制三維表面圖,輸入參數 C 用於控制繪制的三維表面圖的顏色。

surf(..., 'PropertyName', PropertyValue):繪制三維表面圖,設置相應屬性的屬性值。

函數 surfc()用於繪制帶等值線的三維表面圖,其調用格式同函數 surf()基本相同,函數 surfl()可用於繪制帶光照模式的三維表面圖,與函數 surf()surfc()不同的調用格式如下:

surfl(...,'light'):以光照對象 light 生成一個帶顏色、帶光照的曲面。surfl(...,'cdata'):輸入參數 cdata 設置曲面顏色數據,使曲面成為可反光的曲面。

surfl(...,s):輸入參數 s 為一個二維向量[azimuth,elevation],或者三維向量[x,y,z],用於指定光源方向,默認情況下光源方位從當前視角開始,逆時針 45°。

例:簡單對 surf()函數進行舉例

% 數據準備 
xi=-10:0.5:10; 
yi=-10:0.5:10; 
[x,y]=meshgrid(xi,yi); 
z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2); 
% 繪圖 
surf(x,y,z) 

2.3 三維切片圖的繪制

在MATLAB中slice()函數用於繪制三維切片圖。三維切片圖可形象地稱為“四維圖”,可以在三維空間內表達第四維的信息,用顏色來標識第四維數據的大小。slice()函數的調用格式如下:

slice(v, sx, sy, sz):輸入參數 v 為三維矩陣(階數為 m x n x p),x、y、z 軸默認狀態下分別為 1:m、1:n、1:p,數據 v 用於指定第四維的大小,在切片圖上顯示為不同的顏色,輸入參數 sx、sy、sz 分別用於指定切片圖在 x、y、z 軸所切的位置。

slice(x ,y, z, v, sx, sy, sz):輸入參數 x、y、z用於指定繪制的三維切片圖的 x、y、z軸。

slice(...,'method'):輸入參數method用於指定切片圖繪制時的內插值法,’method’ 可以設置的參數有:’linear’(三次線性內插值法,默認)、’cubic’(三次立方內插 值法)、’nearest’(最近點內插值法)。

例:觀察函數在-2≤x≤2、-2≤y≤2、-2≤z≤2 上的體積情況

% 數據準備 
xi=-10:0.5:10; 
yi=-10:0.5:10; 
[x,y]=meshgrid(xi,yi); 
z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2); 
[x,y,z] = meshgrid(-2:.2:2, -2:.25:2, -2:.16:2); 
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) 

以上所述是小編給大傢介紹的使用數學軟件Matlab建模畫圖程序匯總,希望對大傢有所幫助。在此也非常感謝大傢對WalkonNet網站的支持!

推薦閱讀: