Matlab 教材:多重折線圖

在一張圖片上,可以重複製圖。基本上,畫一張圖的指令, 將會自動清除前一張圖。但是,如果下了指令 hold on, 就不會清除前面的圖,而是重複畫上去。Matlab 將自動決定呈現圖片的坐標範圍, 但您也可以用 axis( ) 函式來限定它。 下了 hold on 指令之後的所有圖都會重疊在一張圖片裡。 直到您說了 hold off 為止。

為了示範,讓我們以 300 個折線段,在一張圖片中,畫出以下三個函數在 [-pi, pi] 區間內的曲線圖:

sin(x),     x - x3/6,     x - x3/6 + x5/120
做法如下。
x = linspace(-pi, pi, 301);
y = sin(x);
plot(x, y, 'r');
axis( [-pi pi -1.2 1.2] )
hold on
y = x - x.^3/6;
plot(x, y, 'g');
y = x - x.^3/6 + x.^5/120;
plot(x, y, 'b');
hold off
因為現在要在同一張圖上畫三條曲線,我們必須要能分辨哪條曲線代表哪個函數。 因此,在使用 plot( ) 的時候,我們指定顏色。

hold 指令也能使折線圖和長條圖重疊在一起呈現。 在技術上這是可行的。不過,我覺得難以想像想像,什麼情況需要這樣做? 並不是所有技術上可行的事情都值得做。

以上是一般性的示範。其實,如果只是要在同樣的節點上畫折線圖, Matlab 容許在 plot( ) 函數中一次指定超過一個折線圖。 如果用這個方法,則 Matlab 會自動為每條折線圖設定不同的顏色或不同的線條符號。 讓我們用新方法再做一次上面的例子。

x = linspace(-pi, pi, 301);
plot(x, sin(x), x, x-x.^3/6, x, x-x.^3/6+x.^5/120);
axis( [-pi pi -1.2 1.2] )

使用 hold 的做法比較有彈性,它容許每條折線圖的線段數不盡相同。 例如以下我們以 300 個折線段來畫多項式曲線, 但是以兩條直線來畫橫軸和縱軸。

x = linspace(-pi, pi, 301);
plot(x, x-x.^3/6+x.^5/120);
axis( [-pi pi -1.2 1.2] )
hold on
plot([-pi pi], [0 0], 'k')
plot([0 0], [-1.2 1.2], 'k')
hold off

習題

  1. 請以 300 個折線段,在一張圖片中,畫出以下三個函數在 [-pi, pi] 區間內的曲線圖:
    cos(x),     1 - x2/2,     1 - x2/2 + x4/24
  2. 請以 300 個折線段,在一張圖片中,畫出以下三個函數在 [-2, 1] 區間內的曲線圖:
    x3 + x2 + 2,     3 x2 + 2 x,     6 x + 2
    並且以黑色畫出 x 軸和 y 軸。(坐標軸的單位長不必相等)
單維彰 (2001/10/03) --- 01/10/10 (單) [Prev] [Next] [Up]