matlab—進階繪圖
Logarithm Plots
畫一些與對數(log)有關的影象,log,既可以是影象是log,又可以是座標軸log,用一個例子來說明

首先看到第一個函式 logspace(a,b,c)
,這個函式的作用與 linspace()
差不多,建立一個以10^a為起始,10^b 為終止,中間被等分成 c 個的資料陣列,所以 x = [10^-1,10^1]
,那麼 y = [10^-2,10^2]
重點主要放在 semilogx()
、 semilogy()
、 loglog()
這三個函式上,他們的作用見下表
函式 | 作用 |
---|---|
semilogx | x 軸為對數刻度,y 軸為線性刻度 |
semilogy | x 軸為線性刻度,y 軸為對數刻度 |
loglog | x 軸和 y 軸均為對數刻度 |
plotyy()
有時候在一張圖上花了兩條曲線,但是這兩條曲線如果對應的 y 的值域不一樣, plotyy()
函式可以在一個圖上做出兩個 y 軸

Histogram
首先是第一行的
randn()
函式,這個函式的的作用是產生正態分佈的隨機數或矩陣,其呼叫格式為: randn(m,n)
,返回一個m*n的滿足正態分佈的矩陣。
hist()
函式呼叫格式為: hist(y,nbins)
,將向量 y等分到 nbins個等間隔範圍內 ,並返回每個範圍內元素的個數
bar
matlab 中 bar()
函式的作用是繪製直方圖,常用於統計或資料採集。共有四種形式: bar
、 bar3
、 barh
、 bar3h
,其中 bar
和 bar3
分別用來繪製二維和三維豎直方圖, barh
和 bar3h
分別用來繪製二維和三位水平直方圖,其呼叫格式為: bar(x,y)
,其中 x 必須單調遞增或遞減,y 為 m*n 的矩陣,產生的結果為 m 組,每組 n 個垂直柱。 bar(...,'grouped')
,使同一組直方條緊緊靠在一起。 bar(...,'stack')
,把同一組資料描述在一個直方條上

Pie Charts
pie()
函式用於描繪圓餅圖
x = [1 1 2 2 3 4 5]; pie(x);
Pie3
pie3()
用於描繪三維餅圖
x = [2 3 5]; pie3(x);
Polar chart
polar()
用於描繪極座標影象,其呼叫格式為: polar(theta,rho);
,其中 theta
是用弧度製表示的角度, rho
對應半徑

stairs and stem charts
stairs()
和 stem()
兩個函式的用法與 plot()
函式類似,只不過這兩個,一個是畫階梯圖,另個是畫針狀圖

errorbar
errorbar顧名思義,就是指有誤差範圍的。其呼叫格式為: errorbar(x,y,l,u)
,x 是自變數,y 是因變數,l 是 y 的變動下限,u 是 y 的變動上限,或者 errorbar(x,y,e)
,e 是 y 的變動絕對值

fill
fil(x1,y1, 選項 1,x2,y2, 選項 2,······)
按向量元素的下標漸增次序依次用直線段連線 x,y 對應元素定義的資料點。假如這樣連線所得的折線不封閉,那MATLAB會自動將折線首尾連線起來,形成封閉多邊形,然後在多邊形內部塗滿指定顏色

plot3
三維曲線函式 plot3()
,其呼叫格式為: plot(x,y,z,’style’);
,x,y,z 分別對應三個座標軸,style 可以是線的顏色,風格樣式

meshgrid
上面講的 3d 畫圖的方法是關於線的,如果想畫一個與能呈現出面的圖,就要用到 meshgrid()
函式,其呼叫格式為: [x,y] = meshgrid(x,y);
由向量 x 和 y 生成二維陣列,用來計算二元函式 f(x,y) 的值 z=f(x,y)
三維網格圖
-
mesh(x,y,z)
:繪製由陣列 X,Y,Z 所確定的曲面網格圖,X,Y,Z都為二維陣列時,要求它們的維數相同。X,Y 也可以是向量,但 Z 必須為二維陣列,[m,n] =size(Z)
,此時必須滿足:length(X) = n
且length(Y) = m
-
mesh(z)
:相當於X = 1:n
,Y = 1:m
,其中[m,n] = size(Z)
-
mesh(...,C)
:二維陣列 C 確定網格顏色,省略 C 時相當於 C=Z -
mesh(...,'PropertyName',PropertyValue,...)
:設定屬性值
這裡我多加了個
hidden off
,這個命令是使每個四邊形區域不填充任何顏色,這樣就可以看到後面的影象
meshz(X,Y,Z)
呼叫方式與 mesh 相同,在 mesh 的基礎上遮蔽邊介面

meshc(X,Y,Z)
呼叫方式與 mesh 相同,在 mesh 的基礎上增加等高線

等值線圖
contour(z) contour(z,n) contour(z,v)
三維表面圖
-
surf(Z)
:相當於 X = 1:n ,Y = 1:m,其中[m,n] = size(Z)
-
surf(Z,C)
:二維陣列 C 確定網格顏色,省略 C 時相當於 C=Z -
surf(...,'PropertyName',PropertyValue)
:設定屬性值
surfc(X,Y,Z)
呼叫方式與 surf 相同,在 surf 的基礎上增加等高線




一些圖書圖形的繪製
cylinder
matlab 為我們提供了繪製柱面的函式 cylinder,其呼叫格式為:
[x,y,z] = cylinder [x,y,z] = cylinder(r) [x,y,z] = cylinder(r,n)
sphere
matlab 為我們提供了繪製球面的函式sphere,其呼叫格式為:
sphere sphere(n)
ellipsoid
matlab 為我們提供了繪製橢球面的函式ellipsoid,其呼叫格式為:
[x,y,z] = ellipsoid(xc,yc,zc,a,b,c,n) [x,y,z] = ellipsoid(xc,yc,zc,a,b,c)