根據數值來製圖,而不是根據美感或直覺來繪圖,通稱為測繪。 Matlab 提供幾種測繪的方法, 其中最常用的可能是製作折線圖的 plot( ) 函式。 它的基本使用形式是 plot(x,y),其中 x 和 y 是維度相同的序列或向量。 如果
x=[0 1 2];畫出從 (0,0) 到 (1,1) 到 (2,0) 的兩條折線。試試看。
y=[0 1 0];
plot(x,y)
然後,請先看看以下指令,先猜猜畫出來是什麼樣子,然後再試試看。
x=[0 1 2 0 2 0];
y=[0 2 0 1.3 1.3 0];
plot(x,y)
雖然折線圖是由直線段連接而成,但是只要線段個段數夠多,每一段夠短, 那麼人的眼睛很容易被欺瞞,而以為看到一幅平滑的曲線。 譬如以下我們用 300 段折線畫出 sin(x) 在 [-pi, pi] 區間內的折線圖。
x = linspace(-pi, pi, 301);請務必試試看,所得到的折線圖,看起來想必頗為平滑。
plot(x, sin(x));
我們再度約略解釋上述兩個 Matlab 語句的意思。 第一句話產生了將 [-pi, pi] 區間等分成 300 段的 301 個節點:
上例所製的圖,由 Matlab 自己決定呈現坐標的範圍。 在我的電腦上,Matlab 在橫軸 -4 與 4 之間、縱軸 -1 與 1 之間呈現圖形。 這未必符合我們的品味。如果想要自己設定坐標範圍, 可以用 axis( ) 函式。它的基本用法是 axis(v), 其中 v 是一個四維向量或序列:如果
axis([ -pi pi -1.2 1.2 ])試試看,是否覺得比較好看?
如果呈現的範圍設定錯了,可能完全看不到圖。 承上例,如果說
axis([ -pi pi -2 -1 ])則完全看不到圖。
當我們製圖的時候,橫軸與縱軸的單位長未必一樣長。 例如,上例中,若定義 axis([ -pi pi -1.2 1.2 ]) 則橫軸有 2*pi (大約 6.28) 單位,但縱軸只有 2.4 單位。 如果要強迫橫軸與縱軸的單位長相同,下指令 axis('equal')。例如
clf; 這個指令的意思是清除圖片視窗 (clear figure)這樣,我們可以看到一張「比例正確」的正弦曲線圖。
plot(x, sin(x)); 再製圖一次
axis('equal')
現在再舉一個例子:畫單位圓。我們選擇使用圓的參數式:
t = linspace(0, 2*pi, 301);但是,讀者想必看到一個橢圓。 為什麼呢,我們不是把橫軸和縱軸都定義在 [-1.2, 1.2] 這個區間嗎? 問題是,Matlab 為了視覺上的美感,將其圖片視窗設計成較為橫長的長方形。 因此,還是得說
plot(cos(t), sin(t));
axis( 1.2 * [-1 1 -1 1] );
axis('equal')才會看到一個「圓」。
如果只給 plot( ) 一個參數,例如 plot(v) 而 v 是一個 n 維向量或序列。 則它的效果就相當於 plot((1:n), v)。 也就是說,Matlab 以 v 的元素足標作為它的橫軸坐標。試試看
v = [ 1 4 0 2 3 5];
plot(v)
習題