在一張圖片上,可以重複製圖。基本上,畫一張圖的指令, 將會自動清除前一張圖。但是,如果下了指令 hold on, 就不會清除前面的圖,而是重複畫上去。Matlab 將自動決定呈現圖片的坐標範圍, 但您也可以用 axis( ) 函式來限定它。 下了 hold on 指令之後的所有圖都會重疊在一張圖片裡。 直到您說了 hold off 為止。
為了示範,讓我們以 300 個折線段,在一張圖片中,畫出以下三個函數在 [-pi, pi] 區間內的曲線圖:
x = linspace(-pi, pi, 301);因為現在要在同一張圖上畫三條曲線,我們必須要能分辨哪條曲線代表哪個函數。 因此,在使用 plot( ) 的時候,我們指定顏色。
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
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
習題