2009-11-08 857 views

回答

17

This page說,

腳本與功能

腳本是包含MATLAB 語句間的文件。 MATLAB``函數''是另一種類型的m文件。最大的 腳本和 功能之間的區別是功能有輸入 和輸出參數。腳本文件 只能對 硬編碼到其m文件中的變量進行操作。由於 你可以看到,功能更靈活 。因此它們更適用於通用任務 ,它們將應用於不同的 數據。

腳本對於不會更改的任務 很有用。他們也是一種方式 來記錄一個特定的動作序列,例如一個函數調用 特殊參數值,可能是 難以記住。

還有更多 腳本和 函數之間的細微差異。一個腳本可以被認爲是 作爲鍵盤宏:當您鍵入腳本的名稱 時,其中包含的所有 命令都會執行 ,就像您已將這些 命令鍵入命令窗口一樣。 因此,將在 腳本中創建的所有變量添加到當前會話的 的工作區中。此外,如果 文件中的任何變量與 中的變量具有相同的名稱,那麼當前的工作空間, 中的那些變量的值將由腳本中的操作更改爲 。 這可以用於你的優勢。它也會導致不需要的副作用。

相比之下,函數變量是函數局部的 。 (例外 是可以聲明的,而 使用全局變量,但是 需要用戶明確採取行動並由 用戶採用。)本地函數的作用域 變量爲您提供了更高的安全性和靈活性。唯一的方法(除了 顯式聲明的全局變量) 以獲取信息進入和退出 函數是通過參數列表中的 變量。

一個的腳本和功能之間的主要區別是進入工作區中的變量。例如,假設在工作區中,您已經定義了兩個變量a = 10b = 20。這些變量是在主提示符的命令行中定義的。

腳本文件 - display_mult.m

disp(a*b);

鍵入display_mult將在工作區中顯示的ab的產物,即10*20200

但是,如果你定義的函數,在文件中定義具有相同名稱叫display_mult:

功能文件 - display_mult.m

function display_mult(a,b) 
    disp(a*b); 
end 

您必須包括兩個變量作爲函數調用的參數。因此,display_mult不是這次工作,因爲ab不存在於函數的工作區中。您將不得不通過運行display_mult(a,b)來包含它們,這將顯示所需的結果。

簡單的解釋

腳本中的每個語句相當於在MATLAB的命令窗口中鍵入出來。您只需將它們存儲在一個文件中即可!

另一方面,函數接受參數並且是與主工作空間分離的「新」工作空間。

注意:函數調用結束時的end是可選的,但我想添加它以使事情組織起來。當然,如果你在一個文件中有多個函數定義,它們將全部以end結尾。另外,你不能在同一個文件中有一個腳本和一個函數定義。

+0

舉例? 你能舉個例子嗎? – izzat 2009-11-08 04:41:15

+0

添加了一個示例並在解決方案上進行了擴展 – Jacob 2009-11-08 04:58:02

相關問題