1. 程式人生 > 程式設計 >使用數學軟體Matlab建模畫圖程式彙總

使用數學軟體Matlab建模畫圖程式彙總

目錄
  • 1. 二維資料曲線圖
    • 1.1 繪製二維曲線的基本函式
      • 1.plot()函式
      • 2.含多個輸入引數的plot函式
      • 3.含選項的plot函式
      • 4.雙縱座標函式plotyy
    • 1.2 繪製圖形的輔助操作
      • 1.圖形標註
      • 2. 座標控制
    • 1.3 繪製二維圖形的其他函式
      • 1.對數座標圖
      • 2. 餅圖
      • 3. 條形圖
      • 4. 排列圖
  • 2. 三維圖形
    • 2.1 繪製三維曲線
      • 1.用plot3()函式畫三維曲線
      • 2. 三維網格圖的繪製
    • 2.2 三維表面圖的繪製
      • 2.3 三維切片圖的繪製

      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);

      使用數學軟體Matlab建模畫圖程式彙總

      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),3*sin(x))

      使用數學軟體Matlab建模畫圖程式彙總

      3.含選項的plot函式

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

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

      使用數學軟體Matlab建模畫圖程式彙總

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

      x=(0:pi/100:2*pi)';
      y1=2*exp(-0.5*x)*[1,-1];
      y2=2*exp(-0.5*x).*sin(VSjpf2*pi*x);
      x1=(0:12)/2;
      y3=2*exp(-0.5*x1).*sin(2*pi*x1);
      plot(x,y1,'k:',y2,'b--',x1,y3,'rp');

      使用數學軟體Matlab建模畫圖程式彙總

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

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

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

      使用數學軟體Matlab建模畫圖程式彙總

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

      % 橫座標軸 
      x = linspace(0,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,'r-.','bp',2); 

      使用數學軟體Matlab建模畫圖程式彙總

      4.雙縱座標函式plotyy

      在Matlab中,如果需要繪製出具有不同縱座標標度的兩個圖形,可以使用plotyy函式,它能把具有不同量綱,不同數量級的兩個函式繪製在同一個座標中,有利於圖形資料的對比分析。使用格式為:plotyy(x1,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,y2); 
      plot(x,'k-',3) 

      使用數學軟體Matlab建模畫圖程式彙總

      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,'k-.') 
      % 文字標註 
      text(pi,0.05,'\leftarrow sin(\alpha)') 
      text(pi/4-0.05,'cos(\alpha)\rightarrow') 
      % 標題標註 
      title('sin(\alpha) and cos(\alpha)') 
      % 座標軸標註 
      xlabel('\alpha') 
      ylabel('sin(\alpha) and cos(\alpha)') 

      使用數學軟體Matlab建模畫圖程式彙總

      2. 座標控制

      axis([xmin xmax ymin ymax zmin zmax])

      如果只給出前四個引數,則按照給出的x、y軸的最小值和最大值選擇座標系範圍,繪製出合適的二維曲線。如果給出了全部引數,則繪製出三維圖形。

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

      axis equal:縱橫座標軸採用等長刻度

      axis square:產生正方形座標系(預設為矩形)

      axis auto:使用預設設定

      axis off:取消座標軸

      axis on:顯示座標軸

      axis tighttp://www.cppcns.comht:按緊湊方式顯示座標軸範圍,即座標軸範圍為繪圖資料的範圍

      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,2) 
      plot(x,y) 
      axis([0.4 0.6 -1 1]); 
      title('複雜函式的區域性透視') 

      使用數學軟體Matlab建模畫圖程式彙總

      subplot(m,n,p)

      該函式把當前視窗分成mn個繪圖區,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,'r-.') 
      title('笛卡爾座標系') 
      % 半對數座標系 
      subplot(4,2) 
      semilogx(x,'g:') 
      title('x軸為對數座標系') 
      subplot(4,3) 
      semilogy(x,'b-') 
      title('y軸為對數座標系') 
      % 對數座標系 
      subplot(4,4) 
      loglog(x,4) 
      title('對數座標系')

      使用數學軟體Matlab建模畫圖程式彙總

      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('餅圖')VSjpf 

      使用數學軟體Matlab建模畫圖程式彙總

      3. 條形圖

      看例子:

      %隨機函式產生5*3的陣列,對產生的資料取整 
      Y = round(rand(5,3)*10);  
      % 繪圖 
      subplot(2,2,1) 
      bar(Y,'group') 
      title 'Group' 
      %堆型二維垂直條形圖 
      subplot(2,2) 
      bar(Y,'stack') 
      title('Stack') 
      %堆型二維水平條形圖 
      subplot(2,3) 
      barh(Y,'stack') 
      title('Stack') 
      %設定條形的寬度為1.5 
      subplot(2,4) 
      bar(Y,1.5) 
      title('Width = 1.5') 

      使用數學軟體Matlab建模畫圖程式彙總

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

      % 資料準備 
      y=[190 33 45 42 45]; 
      x=1:5 ;
      % 繪圖 
      figure 
      bar(x,y) 
      title('柱狀圖'); 
      set(gca,'xTicklabel','其他費用'}) 

      使用數學軟體Matlab建模畫圖程式彙總

      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) 

      使用數學軟體Matlab建模畫圖程式彙總

      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,z,'p');
      title('Line in 3-D Space');
      text(0,'origin');
      xlabel('X');ylabel('Y');zlabel('Z');grid;

      使用數學軟體Matlab建模畫圖程式彙總

      2. 三維網格圖的繪製

      在 MATLAB 中,進行三維圖形繪製時,常常需要首先建立三維網格,也就是先建立 平面圖的座標系。在 MATLAB 中,常用 meshgrid()函式生成網格資料,其呼叫格式如下。

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

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

      三維網格圖形是指在三維空間內連線相鄰的資料點,形成網格。在MATLAB中繪製三維網格圖的函式主要有mesh()函式、meshc()函式和meshz()函式。其中,mesh()函式最常 用,其呼叫格式如下:

      mesh(x,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); 
      z =X + Y;    
      % 繪圖 
      figure 
      mesh (z,'FaceColor','W','EdgeColor','K')
      grid 
      title('三維網格圖'); 

      使用數學軟體Matlab建模畫圖程式彙總

      2.2 三維表面圖的繪製

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

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

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

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

      surf(...,PropertyValue):繪製三維表面圖,設定相應屬性的屬性值。

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

      surfl(...,'light'):以光照物件 light 生成一個帶顏色、帶光照的曲面。surfl(...,'cdata'):輸入引數 cdata 設定曲面顏色資料,使曲面成為可反光的曲面。

      surfl(...,s):輸入引數 s 為一個二維向量[azimuth,elevation],或者三維向量[x,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,z) 

      使用數學軟體Matlab建模畫圖程式彙總

      2.3 三維切片圖的繪製

      在MATLAB中slice()函式用於繪製三維切片圖。三維切片圖可形象地稱為“四維圖”,可以在三維空間內表達第四維的資訊,用顏色來標識第四維資料的大小。slice()函式的呼叫格式如下:

      slice(v,www.cppcns.com 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,v,sx,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,yi); 
      z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2); 
      [x,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,xslice,yslice,zslice) 

      使用數學軟體Matlab建模畫圖程式彙總

      以上所述是小編給大家介紹的使用數學軟體Matlab建模畫圖程式彙總,希望對大家有所幫助。在此也非常感謝大家對我們的支援!