11/10/2006

遞回程序之使用

MATLAB Recursive use of function

遞回程序是利用函數呼叫自己,直到特定條件滿足為止。例如:某一數列連續加法,即


Sum=1 + 2 + 3 + 4 + ...+n

下面為這種遞回程序之應用:

function sum=sigma(n)
%Recursive use of function
%Find the sumation of i, if i=1:n
if n>1
sum=n+sigma(n-1);
else
sum=1;
end


執行結果:

>> sigma(5)
ans =
15

這種結果,在MATLAB中不寫程式也可以指令達到相同的目的:

>> sum(1:5)
ans =
15

另外例子:

>> sigma(100)
ans =
5050

>> sum(1:100)
ans =
5050


同樣的道理,若累加改為累乘則會如何呢?實際上程式內容一樣簡單,函數名稱改為factx就行了:


function sum=factx(n)
%Recursive use of function
%Find the multiple prodcut of i, as i=1:n
if n>1
sum=n*factx(n-1);
else
sum=1;
end

執行結果如下:

>> factx(5)
ans =
120

只是,MATLAB竟然將這項功能也變成一個factorial指令了:

>> factorial(5)
ans =

120

結果是不是一樣呢?

11/07/2006

使用繪圖工具

繪圖工具是一種交談式之繪圖環境,不必寫程式。這是matlab最近加強的功能,它可以產生不同型式之圖形,亦可由工作空間中直接選定要繪製之參數資料。具有併圖的功能,一般圖形特性也可以透過此一繪圖工具來達成。


>> plottools

由圖形窗直接選擇 Show Plot Tools指令亦可,最後會顯示如下之視窗。下面之繪圖程式可先提供繪圖之素材,執行後之結果會直接顯示在圖窗上。

x = 0:pi/100:2*pi;
y1 = sin(x);
y2 = sin(x+.25);
y3 = sin(x+.5);
subplot(2,1,1);
plot(x,y1,x,y2,x,y3);
axis tight;
w1 = cos(x);
w2 = cos(x+.25);
w3 = cos(x+.5);
subplot(2,1,2);
plot(x,w1,x,w2,x,w3);
axis tight;


將上述程式以editor存檔,然後在指令窗下執行,其後再執行plottools,即可得到下面的圖形介面。此時圖形會顯現在正中央,兩側分別為圖形繪製時之參數。左邊為圖形佈置參數,可以隨時增加副圖,包括二維與三維之圖形。此外為輸入之變數資料,這些小窗可以關閉或加入,或在參數設定時宣告即可。例如:

>>plottools( 'on', 'figurepalette')

>>figurepalette




圖形之內容則可直接利用滑鼠選擇,其對應之線圖會在左側之圖形觀視窗內顯示,亦可勾選是否顯示。




圖形窗之使用說明

工作鈕的功能


圖形除由plot等指令繪製外,其結果仍可以在窗形窗下修改,所以即使不會圖形指令之參數者,亦可利用圖形窗上之工作鈕作修正。這些工作鈕包括存檔及列印、縮小及放大、圖形旋轉及座標轉換等等。其外觀如下:


此外,由view選單中可以拉出兩個工作單,其一稱為相機工具(Carmera toolbar),可操作三維之圖像;其二為圖形編輯單(Plot edit toolbar),可以對圖形特徵、註解、指示箭頭等進行編輯。





在MATLAB中,有各種二維及三維之繪圖指令可以應用,以適應不同的需求。其中包括線圖、方塊圖、面積圖、向量圖、極座標圖及散佈圖等,可以參考如下之網頁:

有關各種圖之說明,請按此。。。

MATLAB的圖形介面

MATLAB是利用figure作為圖形顯示介面,可以顯示資料及各類型之圖形。實際上亦可利用figure這一個指令產生所需之圖形環境,利用此環境尚可加添說明及其他資訊。所顯示之圖形可以放大縮小,而且具有下拉式介面。

利用plot指令則可將不同的圖形繪於圖形環境之中。利用plot指令可以顯示表格資料,幾何圖形,物體表面及影像。註釋方面則可增加標題、圖標及顏色標等。圖形可利用二維及三維顯示。即使一維的資料亦可顯示於圖中,而使用資料序號作為橫軸對映繪出。

圖之組成


利用繪圖指令及相關工具可以直接將結果顯示於圖形窗之中,每一圖可以有不同的視窗,最後集成一個圖形組。例如以下面之程式,執行後可以得到二維圖形:

x = [0:.2:20];
y = sin(x)./sqrt(x+1);
y(2,:) = sin(x/2)./sqrt(x+1);
y(3,:) = sin(x/3)./sqrt(x+1);
plot(x,y)






上圖中為執行結果,程式會自動使用不同的線型及顏色分別不同組的資料圖,等到技巧成熟時,也可以透過設定參數的方式更改這些顏色及線型。